合数世纪

来源:互联网 发布:爱塔传奇 唐大华知乎 编辑:程序博客网 时间:2024/06/10 03:48

定义一个世纪的100个年号中不存在一个素数,即100个年号全为合数的世纪成为合数世纪;

试探究第n个合数世纪;

1.说明:

应用枚举搜索,设置a世纪的50个奇数年号(偶数年号无疑均为合数)为b,用k试商判别b是否为素数,用变量s统计这50个奇数中的合数的个数;

对于a世纪,若s=50,即50个奇数都为合数,找到a世纪为最早的合数世纪,打印输出后退出循环结束;

2.程序设计:

#include<stdio.h>#include<math.h>int main(){   long a,b,k;   int m,n,s,x;   printf("探究第n个合数世纪,请输入n:");   scanf("%d",&n);   a=1;   m=0;   while(1)   {      a++;    /*检验a世纪*/      s=0;      for(b=a*100-99;b<=a*100-1;b+=2) /*枚举a世纪奇数年号b*/      {         x=0;         for(k=3;k<=sqrt(b);k+=2)            if(b%k==0)            {               x=1;               break;            }         if(x==0)  /*跳出循环进行下世纪的探求*/            break;         s=s+x;  /*年号b为合数时,x=1,s增1*/      }      if(s==50)   /*s=50,合数世纪数m增1*/         m++;      if(m==n)         break;   }   printf("第%d个合数世纪为%ld世纪!\n",n,a);   printf("该世纪的年号%ld--%ld全为合数!\n",a*100-99,a*100);}

3.程序运行示例及其注意事项:

探究第n个合数世纪,请输入n:1第1个合数世纪为16719世纪!该世纪的年号1671801--1671900全为合数!
  • 第1个合数世纪居然出现在百万多年之后,真可谓地老天荒,海枯石烂!那时的人类应该还存在,是否还沿用当今的公元世纪就不得而知了;

注意:应用前节程序可知[1671782,1671906]是125个连续合数区间,第1个合数世纪的100个合数年号1671801~1671900只是[1671782,1671906]的一个子区间

1 0