求第n个质数
输入一个不超过 10000 的正整数 n,求第n个质数
样例输入
10
样例输出
29
#include<stdio.h> #include<math.h> int xxx(int n){ int flag = 0; float a = sqrt(n); for(int i = 2;i <= a;i++){ if(n % i == 0) flag = -1; } if(flag ==0 ) return 1;//不是素数 else return 0; } int main(){ int n; scanf("%d",&n); int c = 2; while(n){ if(xxx(c)) { if(n ==1 ) printf("%d",c); n--; } c++; } return 0; }
思路总结:
1. 质数的判定:
假设一个数为n,只需要判定从 2 ~ √n 是否存在因数,存在因数就不是 质数
2.题目求出的是第n个质数,可以在 最外层设置循环,while( n ) ,当找到一个质数后,不断-1,直到找到第 n 个,
循环内部,依据一个控制变量 c 不断从2往后判定每个数是否是质数,找到一个质数就控制 n -1,每次判定是否是质数 后 控制变量++,直到找到第n个质数,结束所有循环