C语言 百分网手机站

C语言可逆素数教程

时间:2020-11-11 13:15:18 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称为孪生素数。

【C语言可逆素数教程】相关文章:

1.C 语言基础教程

2.如何实现C语言画图教程

3.C语言:VS2015安装教程

4.C语言函数的基本学习教程

5.C语言新手入门必看教程:研究第1个C语言程序

6.c++ c语言while 循环语句入门基础教程

7.C语言学习中的指针用法教程

8.C语言:最详细的VS2010安装教程

9.C语言for循环