当前位置:   article > 正文

可逆素数编程c语言,巧用C语言求四位的可逆素数

如何用c语言表示出所有四位可逆素数

求四位的可逆素数。可逆素数指:一个素数将其各位数字的顺序倒过来构成的反序数也是素数。

*问题分析与算法设计

本题的重点不是判断素数的方法,而是求一个整数的反序数。求反序数的方法是从整数的末尾依次截取最后一位数字,每截取一次后整数缩小10倍,将截取的数字作为新的整数的最后一位(新的整数扩大10倍后加上被截取的数字)。这样原来的整数的数字从低到高被不断地截取,依次作为新的整数从高到低的各位数字。

*程序说明与注释

#include

#include

int num(int number);

int ok(int number);

int main()

{

int i,count;

printf("There are invertable primes with 4 digits: \n");

for(count=0,i=1001;i<9999;i+=2) //穷举全部的奇数

{

if(num(i)) //若是可逆素数,则输出

printf(count%9 ? "%3d:%d" : "%3d:%d\n",++count,i);

}

return 0;

}

int num(int number)

{

int i,j;

if(!ok(number))return 0; //判断是否为素数

for(i=number,j=0;i>0;i/=10) //按位将整数倒过来,产生反序数

{

j=j*10 + i%10;

}

if(number

{

if(!ok(i)) //判断对应的反序数是否为可逆素数

{

return 0;

}

else

{

return 1; //若是可逆数素数,则返回1

}

}

else

{

return 0;

}

getchar();

return 0;

}

int ok(int number)

{

int i,j;

if(number%2 ==0) //判断是否为素数

return 0;

j= sqrt((double)number) +1 ; //取整数的平方根为判断的上限

for(i=3;i

{

if(number %i ==0) //若为素数则返回1,否则返回0

return 0;

}

return 1;

}

*思考题

求1000以内的孪生素数。孪生素数是指:若a为素数,且a+2也是素数,则素数a和a+2称为孪生素数。

标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至hey@evget.com

文章转载自:网络转载

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

闽ICP备14008679号