本文目錄一覽:
C語言求四位可逆素數
#include “stdio.h”
int prime(int n){//素數判斷
int i;
if(!(n1))
return 0;
for(i=3;i*i=n;i+=2)
if(!(n%i))
return 0;
return 1;
}
int main(int argc,char *argv[]){
int n,k;
for(k=0,n=1001;n10000;n+=2)
if(prime(n) prime(n/1000+n/100%10*10+n/10%10*10+n%10*10))
printf(++k%10 ? “%5d” : “%5d\n”,n);
if(k%10)
printf(“\n”);
return 0;
}
運行結果:
c語言可逆素數
#includestdio.h
int isPrimenum(int n)
{
int i;
int flag=0;
for(i=2;in;i++)
if(n%i==0)
{
flag=1;
break;
}
if(flag==1)
return 1;
else
return 0;
}
int rever(int n)
{
int temp=0,m=0;
do{
temp=temp*10+n%10;
n/=10;
}while(n);
printf(“temp=%d\n”,temp);
m=isPrimenum(temp);
if(!m)
return 0;
else
return 1;
}
int main()
{
int n=0,d=0,m=0;
printf(“input n:”);
scanf(“%d”,n);
d=isPrimenum(n);
printf(“n=%d\n”,n);
m=rever(n);
if(!d!m)
printf(“%d is reverprimenum\n”,n);
else
printf(“不是\n”);
return 0;
}
求教C語言大神【可逆素數的判斷】
#includestdio.h
#includemath.h
main()
{
int i,k,m,b=0;
scanf(“%d”,i);
if(i==1)
{
printf(“no\n”);/* 判斷1不是素數 */
return;
}
k=sqrt(i);
for(m=2;m=k;m++)
if(i%m==0){
printf(“no\n”);/* i不是素數,輸出no */
return;
}
if(m*mi) /* i是素數 */
{
while (i!=0)
{
b=b*10+i%10;
i=i/10;
}
k=sqrt(b);
/* 求i的可逆 */
for(m=2;m=k;m++)
if(b%m==0){
printf(“no\n”);/* i的可逆不是素數,no */
return;
}
if(m*mb)
printf(“yes\n”);/* i的可逆也是素數,yes */
}
}
盡量按照原有的風格來改。主要是多添加了幾個return,還有改了2處if(i*im)改為if(m*mi)。第一個else如果不加{}則只對else後面一行有效。我加了return後,乾脆去掉第一個else。
問:不加return有什麼錯誤?
答:判斷為”no”後,不一定m*m不一定就大於i。
全部都在main中搞定,不太好,好的風格應該有縮進,並且科學地分多個函數來實現,就像zls4r那樣。
原創文章,作者:HHJF,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/147866.html