1013. 数素数 (20)--PAT乙级

来源:互联网 发布:装机软件 编辑:程序博客网 时间:2024/06/01 12:12

1013. 数素数 (20)

时间限制
100 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
CHEN, Yue

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

输入格式:

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

输出格式:

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

输入样例:
5 27
输出样例:
11 13 17 19 23 29 31 37 41 4347 53 59 61 67 71 73 79 83 8997 101 103
分析:利用素数筛选法制出素数表(保证至少有10^4个素数),并且注意输出的格式,不能有多余的空格。

代码:

#include<iostream>#include<cstdio>#include<string>#include<cmath>#include<vector>using namespace std;const int MAXN = 200000;vector<int>v;bool mark[MAXN + 5];int M,N;void prime()//素数筛选法 {for(int i = 1; i < MAXN; i++){if(i % 2 == 0)mark[i] = false;else mark[i] = true;}mark[2]=true;for(int i = 3; i * i <= MAXN; i += 2){for(int j = i * i; j <= MAXN; j = j + 2 * i)mark[j] = false;}v.push_back(2);for(int i=3; i <= MAXN; i = i + 2)//素数表 if(mark[i])v.push_back(i);}int main(){scanf("%d%d", &M, &N);int j;for(int i = M-1, j = 1; i < N; i++,j++)//输出Pm到Pn { printf("%d",v[i]);if((j % 10)&&(i != N-1))//注意输出格式 不能有多余的空格 printf(" ");else printf("\n");}}



原创粉丝点击