C 函式質數問題

撰寫一個函式 prime(int x), 能測試 x 是否為質數 , 並利用此函式列印出 1~100 的質數。

3 個解答

評分
  • 7 年前
    最佳解答

    //如果你是要找前100個質數的話這是程式碼

    #include <stdio.h>

    #include <stdlib.h>

    bool isprime(int n){

    int i;

    for(i=2;(i*i)<=n;i++)

    if(!(n%i)) return false;

    return (n>0)?true:false;

    }

    int main(){

    int i=1,n=2;

    while(i<=100){

    if(isprime(n)){

    printf("prime #%d is %d\n",i, n);

    i++;

    }

    n++;

    }

    system("pause");

    return 0;

    }

    2013-10-21 05:59:23 補充:

    return (n>0)?true:false;

    這行沒注意, 1不是質數, 改成

    return (n>1)?true:false;

    感謝poison提醒啦

    2013-10-21 06:00:36 補充:

    感謝 prisoner26535 ( 知識長)

    參考資料: 每天和程式作伍的研究生
  • 7 年前

    這個質數判定是滿經典的例題,有很多種寫法其實都通

    不過最後歸結到一個難題,若是要注重演算法效能同時必需犧牲程式碼邏輯的易理解性,所以寫法看個人,如果是考試,題目沒規定,那就直接很簡單的每一輪 +1 。

    不要考慮 1或2 是不是質數,也不要考慮是不是需要先開根號或除以 2 ,這樣子撰寫程式的容易度會差很多。

  • 7 年前

    answe 001 is not so right.

    isPrime(1) returns true

    you need to change

    return (n > 0) ? true : false;

    to

    return n>1;

    2013-10-21 08:00:34 補充:

    nope, I did not say

    return (n>1)?true:false;

    I said

    return n>1;;;;;;;;;;;;;;;;;;;;;;;

    no "()"

    no ?

    no true

    no :

    no false

還有問題?馬上發問,尋求解答。