素数在正整数中的分布是不均匀的,譬如:2,3,5,7,11,13,17,19,23,29,31,…。输入一个整数n,输出第n个素数。

素数在正整数中的分布是不均匀的,譬如:2,3,5,7,11,13,17,19,23,29,31,…。输入一个整数n,输出第n个素数。

可以先初始化一个变量为2,然后在一个循环不断判断从2往后的数是否为素数,如果为素数则素数个数+1,直到找到第n个素数为止即可,代码如下:


#include <stdio.h>

int main(void){
    
    int n;
    printf("请输入一个正整数n:"); 
    scanf("%d",&n); 
    
    int num=0,j=2,k,prime;  // j为当前要判断的数 
    while(num<n){ //当未找到第n个素数,则一直循环寻找下一个素数 
        
                    
        prime=1;  // 当前的数是否为素数的标志,默认1为素数,  
        for(k=2;k<j;k++){ // 判断当前的数是否为素数 
            if(j%k==0){   
                prime=0;
                break;
            }
        }
        if(prime==1){  //如果为素数,则素数个数+1 
            num++;            
        }        
        j++;  //判断下一个数     
                        
    }
    
    //  打印结果,j为第n个素数后又++了一次,所以第n个素数为j-1 
    printf("第%d个素数是:%d\n",n,j-1);
    
} 

img

img

img


#include <stdio.h>

int isp(int n)
{
    int count = 0, flag = 0;
    for (int i = 2;; i++)
    {
        for (int j = 2; j < i; j++)
        {
            if (i % j == 0)
            {
                flag = 1;
                break;
            }
        }
        if (flag == 0)
        {
            count++;
        }
        else
            flag = 0;

        if (count == n)
            return i;
    }
}

int main(int argc, char *argv[])
{
    int n;
    scanf("%d", &n);
    printf("第%d个素数是%d\n", n, isp(n));
    return 0;
}