#include
int fact(int n)
{
int i;
if(n<2)return 0;
for(i=2;i*i<=n;i++)
if(n%i==0)return 0;
return 1;
}
int fbct(int n)
{ int s=0;
while(n>0){
s=s*10+n%10;n/=10;
}if(s!=n)return 0;
else return 1;
}
int main()
{
int m,n,i,d=0;
scanf("%d %d",&m,&n);
for(i=m;i<=n;i++)
{if(fact(i)&&fbct(i))d++
;}printf("%d",d);
return 0;
}
回文素数,求错误点,不知道哪错了
回文函数错误。n都被你while循环改成0了啊,if(s!=n)肯定不对了啊。在while循环前,加个int m=n;最后if(s!=m) return 0
应该是判断回文数那里,if(s!=n)return 0; 这里的n被除为0了,所以导致条件不满足,从而判断出错,在改变n之前用一个临时变量存储n即可,修改如下:
#include<stdio.h>
int fact(int n)
{
int i;
if(n<2)return 0;
for(i=2;i*i<=n;i++)
if(n%i==0)return 0;
return 1;
}
int fbct(int n)
{ int s=0;
int temp=n;
while(n>0){
s=s*10+n%10;n/=10;
}
//printf("s=%d,n=%d\n",s,n) ;
if(s!=temp)return 0;
else return 1;
}
int main()
{
int m,n,i,d=0;
scanf("%d %d",&m,&n);
for(i=m;i<=n;i++)
{
if(fact(i)&&fbct(i)){
// printf("i=%d\n",i);
d++;
}
}
printf("%d",d);
return 0;
}