文章目录
- 1 题目
- 2 解析
- 2.1 题意
- 2.2 思路
- 3 参考代码
1 题目
1013 数素数 (20分)
令 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
2 解析
2.1 题意
打印第m个到第n个素数
2.2 思路
首先打印素数表,然后按范围打印。
对于数组的大小,可以先测试第10001个素数的范围(得到大致的范围上限是104750)。
3 参考代码
#include
const int MAXN = 104750;//第10001个素数
int prime[MAXN], pNum = 0;
bool p[MAXN] = {0};
void Find_Prime(){
for (int i = 2; i < MAXN; ++i)
{
if(p[i] == false){
prime[pNum++] = i;
for (int j = i + i; j < MAXN; j += i)
{
p[j] = true;
}
}
}
}
int main(int argc, char const *argv[])
{
Find_Prime();
int m, n;
scanf("%d%d", &m, &n);
int count = 0;
for (int i = m - 1; i < n; ++i) {
if(count != 0){
printf(" ");
}
printf("%d", prime[i]);
count++;
if(count == 10){
printf("\n");
count = 0;
}
}
return 0;
}