題目描述:
令 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;
}