c++编译
#include <iostream>
#include <stdio.h>
#include <math.h>
using namespace std;
const int maxn=1000001;
int prime[maxn];
int num=0;
bool isPrime(int n){
int s=(int)sqrt(1.0*n);
for(int i=2;i<=s;i++){
if(n%i==0)
return false;
}
return true;
}
void Find_Prime(){
for(int i=2;i<=maxn;i++){
if(isPrime(i)==true){
num++;
prime[num]=i;
}
}
}
int main()
{
Find_Prime();
int m,n;
cin>>m;
cin>>n;
int fact=0;
for(int i=m;i<=n;i++){
cout<<prime[i]<<" ";
fact++;
if(fact==10){
cout<<endl;
fact=0;
}
}
return 0;
}
注释:因为不知道底=第10^4个素数有多大,所以将测试上限maxn设置得大一些。
首先,获取素数表从2开始到maxn进行判断,若为素数,则放入数组中,获得素数表后就可以利用循环,直接输出第m到第n个素数了。