巧用C语言求四位的可逆素数

原创|其它|编辑:郝浩|2010-02-23 10:34:08.000|阅读 1541 次

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

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

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

  *问题分析与算法设计

  本题的重点不是判断素数的方法,而是求一个整数的反序数。求反序数的方法是从整数的末尾依次截取最后一位数字,每截取一次后整数缩小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称为孪生素数。


标签:

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

文章转载自:网络转载

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP