当前位置:   article > 正文

C 语言写四位可逆素数,求四位可逆素数,所谓的可逆素数是指:一个素数将各位数字的顺序反过来也是素数。...

可逆素数4位数c语言

满意答案

00e27ab806e4881f8254fe7ae8741834.png

Ben杰min

2014.07.09

00e27ab806e4881f8254fe7ae8741834.png

采纳率:44%    等级:13

已帮助:5224人

//已经修改OK,可能会有两个警告,可用对k=sqrt(m) ,k=sqrt(str1[i])

//这两句进行类型转换即可..不过对运行没什么影响...

#include <stdio.h>

#include <stdlib.h>

#include <math.h>

int main()

{

int str[9001],str1[9001];//应该定义为int类型,另外四位素数有9000,数组大小不合适

int a,b,c,d,i,j=0,k,m,l=0,n=0;

for (m=1000;m<10000;m++)

{

//*********

k=sqrt(m);

for (i=2;i<=k;i++)//判断应该从2开始,直接对0求余,运行时会报错

if (m%i == 0)

break;

if (i>k)

{

str[j]=m;

j++;

}

}

//*********这部分是存储四位素数部分,应该扩起来

for (i=0;i<j;i++)

{

a=str[i]/1000;

b=(str[i]%1000)/100;

c=(str[i]%100)/10;

d=str[i]%10;

str1[l]=d*1000+c*100+b*10+a;

l++;

}

for (i=0;i<l;i++)

{

k=sqrt(str1[i]); //应该是数组str1[i]

for (j=2;j<=k;j++)//for循环内层参数与外层相同,均为i,可用j,同样需从2开始

if (str1[i]%j == 0)//是str1[i]而不是m

break;

if (j>k)

printf("%d\

",str1[i]);//直接输出即可,不用添加多余的数组保存

//

{

//

str2[n]=str1[i];

//

n++;

//

}

}

//

for (i=0;i<n;i++)

//

printf("%d\

",str2[i]);

return 0;

}

10分享举报

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/512304
推荐阅读
相关标签
  

闽ICP备14008679号