原题链接: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
我的思路:
专门写一个函数用来判断是否为素数,用count来记录是第几个素数,将素数存在data数组中。需要注意的是将10000个素数
都存在数组中,还要注意输出格式
我的代码:
#include <bits/stdc++.h>
using namespace std;
int isPrime(int data){
int flag=1;
int len=sqrt(data);
if(data == 0 || data == 1)
flag=0;
else{
for(int i=2;i<=len;i++)
if(data%i == 0){
flag=0;
break;
}
return flag;
}
}
int main(){
int m,n,count=1,data[10010];
cin>>m>>n;
for(int i=2;;i++){
if(isPrime(i) == 1)
data[count++]=i;
if(count > 10000)
break;
}
for(int i=m;i<=n;i++){
cout<<data[i];
if((i-m+1)%10 == 0)
cout<<endl;
else if(i != n)
cout<<" ";
}
return 0;
}