赞
踩
令 Pi 表示第 i 个素数。现任给两个正整数 M≤N≤104,请输出 PM 到 PN 的所有素数。
输入在一行中给出 M 和 N,其间以空格分隔。
输出从 PM 到 PN 的所有素数,每 10 个数字占 1 行,其间以空格分隔,但行末不得有多余空格。
5 27
- 11 13 17 19 23 29 31 37 41 43
- 47 53 59 61 67 71 73 79 83 89
- 97 101 103
- #include <stdio.h>
- #include <math.h>
- int main()
- {
- int m,n,flag=0,num=1,outnum=0;scanf("%d %d",&m,&n);
- if (m==1) //把第一个素数2单独弄出来 省时间
- {
- outnum++;
- printf("2");
- if (m!=n) //最后1个测试点只输出2
- printf(" ");
- }
- for (int i=3;num<n;i+=2) //num为找到的第几个素数 小于n是一直循环
- {
- flag=0; //判断是否为素数标志
- for (int j=3;j<=sqrt(i);j+=2) //没有sqrt会超时 有一个测试点n==10000
- {
- if (i%j==0)
- {
- flag=1;
- break;
- }
- }
- if (!flag)
- {
- num++; //素数个数加1
- if (num>=m) //从m个素数开始输出
- {
- if(++outnum%10==0 || num==n) //输出个数为10的倍数和最后一个没有空格
- printf("%d\n",i);
- else
- printf("%d ",i);
- }
- }
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。