0
点赞
收藏
分享

微信扫一扫

1013 数素数 (20分)


文章目录

  • ​​1 题目​​
  • ​​2 解析​​
  • ​​2.1 题意​​
  • ​​2.2 思路​​
  • ​​3 参考代码​​

1 题目

1013 数素数 (20分)
令 P​i​​ 表示第 i 个素数。现任给两个正整数 M≤N≤10​4​​ ,请输出
PM
​​ 到 P​N​​ 的所有素数。

输入格式:
输入在一行中给出 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;
}

举报

相关推荐

0 条评论