解析:使用素数筛法,注意i从2开始,还有就是输出的是prime【i-1】,因为数组下标从0开始,所以prime【i】存储的是第i-1个素数
代码:
#include <cstring>
#include<map>
using namespace std;
const int ax=1000001;
int prime[ax],s=0;
bool p[ax];
//bool iss(int n){
// if(n<=1) return false;
// for(int i=2;i<sqrt(1.0*n);i++){
// if(n%i==0)
// return false;
// }
// return true;
//}
void init(int n){
for(int i=2;i<ax;i++){
if(p[i]==false){
prime[s++]=i;
if(s>=n)
break;
for(int j=i+i;j<ax;j+=i)
p[j]=true;
}
}
}
int main() {
int m,n;
cin>>m>>n;
init(n);
int c=0;
for(int i=m;i<=n;i++){
cout<<prime[i-1];
c++;
if(c%10==0)
cout<<endl;
else if(i<s)
cout<<" ";
}
return 0;
}p
在这里插入代码片