B1013 数素数 (20分)

素数计算

1. 原文

令 Pi 表示第 i 个素数。现任给两个正整数 MN≤104,请输出 PM 到 PN 的所有素数。

输入格式:

输入在一行中给出 MN,其间以空格分隔。

输出格式:

输出从 PM 到 PN 的所有素数,每 10 个数字占 1 行,其间以空格分隔,但行末不得有多余空格。

输入样例:

1
5 27   

输出样例:

1
2
3
11 13 17 19 23 29 31 37 41 43
47 53 59 61 67 71 73 79 83 89
97 101 103

2. 解析思路

固定套路 判断素数,打印素数

测试点耗时过大:当素数个数超过规定的n时,应该及时退出循环 if(cnt>m){break; }

测试点4错误:i < 1000010; 循环判断改的大点就可以了?

3. AC代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include<stdio.h>
#include<math.h>
bool isPrime(int n){
if (n<2)
{
return false;
}
int sqr=(int)sqrt(1.0*n);
for (int i = 2; i <= sqr ; ++i)
{
if (n%i==0)
{
return false;
}
}
return true;

}
int main(){

int n,m;
scanf("%d%d",&n,&m);
int cnt=0;
int line=10;
int index=0;
for (int i = 2; i < 1000010; ++i)
{
if(cnt>m){
break;
}
if (isPrime(i))
{
cnt++;
if (cnt>=n&&cnt<=m)
{
index++;
printf("%d", i);
if (index%line!=0&&cnt<m)
{
printf(" ");
}
else{
printf("\n");
}
}
}
}

return 0;
}
本文结束  感谢您的阅读
  • 本文作者: Wang Ting
  • 本文链接: /zh-CN/2019/09/06/B1013/
  • 发布时间: 2019-09-06 21:57
  • 更新时间: 2021-10-29 14:15
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!