题目链接
令 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
#include <iostream>
#include <queue>
using namespace std;
bool isPrime(int number)
{
if(number==1) return 0;
if(number==2) return 1;
for(int i=2;i*i<=number;i++)
if(number%i==0) return 0;//找到因子就返回false
return 1;
}
int main(){
int n,m;
cin>>n>>m;
queue<int> q;
int t=2;
for(int i=1;i<=m;i++){ //先找出第1个到第M个
while(true){
if(isPrime(t)){
q.push(t);
if(i<n) q.pop(); //在N之前的就删掉 最终得到[N,M]
t++;
break;
}
t++;
}
}
for(int i=0;i<m-n+1;i++){
cout<<q.front();
q.pop();
if(i!=m-n){ //最后没有空格 十个数一换行
if((i+1)%10!=0) cout<<" ";
else cout<<endl;
}
}
}