题目描述:
令 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,3,4…的倍数,剩下的就是素数,对选出的素数进行格式输出。
注意:
这里需要多选一些素数
因为第10000个素数一定大于10000的
代码:
#include<iostream>
using namespace std;
int a[1000001]={0};
int main() {
int count=0;
int m,n,i;
for(i=2;i<500001;i++) {
for(int j=2;i*j<1000001;j++) {
if(a[i*j]==0) {
a[i*j]=1;
}
}
}
cin>>m>>n;
int ans=0;
if(n>10000||m>10000||m>n)
return -1;
for(i=2;i<=1000001;i++) {
if(a[i]==0) {
count++;
if(count==n) {
cout<<i<<endl;
break;
}
if(count>=m) {
cout<<i;
ans++;
if(ans==10) {
cout<<endl;
ans=0;
} else {
cout<<" ";
}
}
}
}
return 0;
}