求第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個質數,結束所有循環

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM