輸入一個不超過 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個質數,結束所有循環
