PAT 1013数素数 c++

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个素数了。

猜你喜欢

转载自blog.csdn.net/weixin_43902941/article/details/105956550