第n小的素数(素数筛选法)

总时间限制: 1000ms 内存限制: 65536kB
描述
输入一个正整数n,求第n小的质数。
输入
一个不超过10000的正整数n。
输出
第n小的质数。
样例输入
10
样例输出
29

***#include<stdio.h>
#include<math.h>
#include<stdbool.h>
bool isprime(int a);//boll函数判断是否是素数,是则返回1,不是返回0。初学者不会bool类型函数的也可以用int类型
int main()
{
    int a[2000000];//定义估计大于第10000个素数的下标
    int i,n,k=0;
    scanf("%d",&n);
    for(i=2;i<2000000;i++)
        a[i]=isprime(i);//把数组里所有的素数初始化为1,其他则为0.
    for(i=2; i<=2000000; i++)
    {
        if(a[i]==1)//将素数保留,其他剔除,将素数排队编号。
            k++;
        if(k==n)
            break;
    }
    printf("%d",i);
    return 0;
}
bool isprime(int a)//
{
    int b,temp=sqrt(a);
    for(b=2; b<=temp; b++)
    {
        if(a%b==0)
        {
            return 0;
        }
    }
        return 1;
}
***

猜你喜欢

转载自blog.csdn.net/Mr_Feng07007/article/details/78916957
今日推荐