筛选求素数法,怎么求第k个素数是多少

  素数就是不能再进行等分的整数。比如:7,11。而9不是素数,因为它可以平分为3等份。一般认为最小的素数是2,接着是3,5,第K个素数是多少?2 是第一素数,3 是第二个素数,依此类推。

参考如下:

img

#include <stdio.h>
//判断素数
int prime(int n)
{
    int i;
    if(n<2) return 0;
    for (i=2;i<n;i++)
    {
        if(n%i==0)
            return 0;
    }
    return 1;
}
int main()
{
    int i,k;
    int cnt=0;
    scanf("%d",&k);
    for (i=2;;i++)
    {
        if(prime(i))
        {
            cnt++;
            if(cnt == k)
            {
                printf("%d",i);
                return 0;
            }
        }
    }
}

循环从2开始判断素数,统计是第K个就行了

#include <stdio.h>
int isprime(int n)
{
    int i;
    if(n<2)
        return 0;
    for(i=2;i*i<=n;i++)
      if(n%i==0)
          return 0;
    return 1;
}
int main()
{
    int k,n=2;
    scanf("%d",&k);
    while(1)
    {
        if(isprime(n))
        {
            k--;
            if(k==0)
            {
                 printf("%d",n);
                 break;
            }
        }
        n++;
    }
    return 0;
}


#include <stdio.h>
int main() {
    int K = 0;
    scanf("%d", &K);
    if (K<=0)
    {
        return 0;
    }
    int num = 0;
    int i = 2;
    while (1)
    {
        int is = 1;
        for (int s = 2; s < i; s++)
        {
            if (i % s == 0)
            {
                is = 0;
                break;
            }
        }
        if (is == 1)
        {
            num++;
        }
        if (num == K)
        {
            printf("%d", i);
            break;
        }
        i++;
    }
    return 0;
}