Prime number(质数)

精典例题NOI-1.5-44:第n小的质数

描述

输入一个正整数n,求第n小的质数。

输入

一个不超过10000的正整数n。

输出

第n小的质数。

样例输入

10

样例输出

29

案例分析1

#include<iostream>

int main(){
    //freopen("1.533.in", "r", stdin);
    unsigned int n, m=0, i, j,sum=0;
    scanf("%d",&n);
    for(i=2; ;i++){
        for(j=2; j<=(i/j+1); j++){
            if( i%j==0 && j!=i ){
                m++;
                break;
            }
        }
        if(m==0) sum++;
        m=0;
        if(sum==n) break;
    }
    printf("%d", i);
    return 0;
}

安全案例2

#include <iostream>
#include <cmath>
#define MAXN 1000000

int main() {
    //freopen("1.533.in", "r", stdin);
    bool number[MAXN+1];
    for(int i=0; i<=MAXN; i++) number[i] = true;//先把所有数赋值为ture;

    int m = (int)sqrt(MAXN);//确认轮循的最大值是MANX开方;
    for(int i=2; i<=m; i++) //在此轮循内,给所有因数标false
        if(number[i])
            for(int j=2*i; j<=MAXN; j+=i) number[j] = false;

    int n, count=0;
    scanf("%d", &n);
    for(int i=2; i<=MAXN; i++)
        if(number[i] && ++count==n) {//++count 表示当number[i]为true时,先++count;类似i++, 属于后+1, 这个是用之前先加+ 
            printf("%d\n", i);
            break;
        }
    return 0;
}

results matching ""

    No results matching ""