任意的整数,当从左向右读与从右向左读是相同的,且为素数时,称为回文素数。求1000以内的所有回文素数。
只能使用顺序结构,选择结构,循环结构和数组,函数在本题不允许
我目前只写出了判断回文数的代码,如下:
#include<stdio.h>
#include<math.h>
int main()
{
int m,a[100],b[100],i=0,j=0,n=0,c,k,l,sum;
scanf("%d",&m);
l=m;
while(m>10)
{
m/=10;
n++;
}
m=l;
n+=1;
k=n-1;
while(m>0)
{
a[i]=m%10;
i++;
m=m/10;
}
m=l;
while(m>0)
{
c=pow(10,k);
b[j]=m/c;
m=m-b[j]*c;
k=k-1;
j++;
}
m=l;
sum=0;
for(i=0;i<n;i++)
{
if(a[i]==b[i])
{
sum=+1;
}
}
}
你这复杂了,将整数不断求余10,余数乘以循环相加,最后两数相等就是回文
另外你要确定一下个位数算不算
#include <stdio.h>
int main()
{
int i,j,hw=0,k;
for(i=2;i<1000;i++)
{
for(j=2;j<i;j++)
{
if(i%j==0)
break;
}
if(j!=i)
continue;
k = i;
hw = 0;
while(k>0)
{
hw = hw*10+k%10;
k = k/10;
}
if(hw== i)
printf("%d ",i);
}
return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!