编写程序求出100到999之间的无暇素数. 10
2个回答
推荐于2017-12-16 · 知道合伙人教育行家
关注
展开全部
所谓无暇素数是指本身为素数,且其逆序数也是素数的数。
例如:
//参考代码如下:
#include<stdio.h>
#include<math.h>
int main ( )
{
int n,a,b,c,k,d,i,flag;
for(n=100;n<=900;n++)//从100-900依次判断是否是无暇素数
{
flag=1;
k=(int)sqrt(n);
for(i=2;i<=k;i++)//先判断n是否为素数
{
if(n%i==0)
flag=0;
}
if(flag)//如果n为素数,计算n的逆序数
{
a=n%10;
b=n/10%10;
c=n/100;
d=a*100+b*10+c;
k=(int)sqrt(d);
for(i=2;i<=k;i++)//判断逆序数是否为素数
{
if(d%i==0)
flag=0;
}
if(flag)//均为素数输出该数(无暇素数)
printf("%d ",n);
}
}
printf("\n");
return 0;
}
/*运行结果
101 107 113 131 149 151 157 167 179 181 191 199 311 313 337 347 353 359 373 383
389 701 709 727 733 739 743 751 757 761 769 787 797
*/
展开全部
程序代码(函数f1判断素数,f2转换逆数):
#include<stdio.h>
int f1(int x){
int i;
for (i=2;i<x;i++) if (x%i==0) return 0;
return 1;
}
int f2(int x){
int y=0;
while(x){
y=y*10 + x%10;
x=x/10;
}
return y;
}
main(){
int i;
printf("\n");
for (i=100;i<=999;i++)
if (f1(i) && f1(f2(i)))
printf("%d\t",i);
}
输出结果:
101 107 113 131 149 151 157 167 179 181
191 199 311 313 337 347 353 359 373 383
389 701 709 727 733 739 743 751 757 761
769 787 797 907 919 929 937 941 953 967
971 983 991
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询