我感觉应该是回文数判断呢写错了,但是不知道错在哪。
#include
int f(int n)
{
for(int i=2;i<=n;i++)
{
if(n%i==0);
return 0;
}
return 1;
}
int z(int x)
{
int y=0;
while(x>=0)
{
y=y*10+x%10;
x/=10;
}
if(y==x)
return 1;
}
int main ()
{
int n,sum=0;
scanf("%d",&n);
for(int i=11;i<=n;i++)
{
if(f(i)&&z(i))
sum++;
}
printf("%d",sum);
return 0;
}
#include<stdio.h>
int prime(int i); //判断素数的函数
int palindrome(int i); //判断回文数的函数
int main()
{ int n; //单纯求1000内回文素数可将前三行删去,将第五行的n改为1000.
printf("请输入需要多少以内的回文素数\n");
scanf("%d",&n);
printf("该范围内的回文素数如下:\n");
for(int i=11;i<n;i++)
{
if(prime(i)&&palindrome(i))
{
printf("%d\n",i); //输出该回文素数
}
}
return 0;
}
int prime(int i) //判断素数的函数
{
int j = 2;
for(j;j<i;j++)
{
if(i%j==0) //如果j能被小于j的数整除,则返回false 0;
{
return 0;
}
else //初学者用这个判断简单易懂,如果想要了解更多可以看
{ //博主关于判断素数的文章
return 1;
}
}
}
int palindrome(int i)
{
int x,y;
int z = 0;
x=i;
while(i!=0) //对数进行倒转如:将123倒转为321
{
y=i%10; //获得i的末位数
z=z*10+y; //每次自乘十后加末位数
i /= 10; //每次自除十舍弃末尾数
}
if(x==z) //判断倒转后是否等于原数,即是否为回文数
{
return 1; //是则返回真1,否则返回假0;
}
else
{
return 0;
}
}
if(n%i==0); 第6行,最后的分号删掉!!!
另外z函数最后应该加上return 0;否则y不等于x时,没有返回值了