合数世纪

定义一个世纪的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
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值