素数在正整数中的分布是不均匀的,譬如: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);
}
#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;
}