题目链接:https://www.patest.cn/contests/pat-b-practise/1013
令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>
using namespace std;
bool isPrime(int x){
if(x<2)
return false;
int i;
for(i=2;i*i<=x;i++){
if(x%i==0)
return false;
}
return true;
}
int main(){
int M,N;
cin>>M>>N;
int count=0;//记录是第几个素数
int out_count=1;//记录输出的第几个素数
for(int i=2;;i++){
if(isPrime(i)){
count++;//素数个数更新
if(count>=M&&count<=N){//对满足次条件的素数进行输出
if(out_count%10==1)//正在输出每行的第一个
cout<<i;
else if(out_count%10==0||count==N)//正在输出每行的最后一个
cout<<" "<<i<<endl;
else
cout<<" "<<i;
out_count++;
if(count==N)//输出完第N个素数之后结束循环
break;
}
}
}
return 0;
}
结果: