C語言 素數求解的N種境界

2021-09-26 14:06:58 字數 1063 閱讀 7642

int main()

if (j == i)

}printf("%d\n", count);

system("pause");

return 0;

}

2、境界2

因為所有素數都是奇數,所以可優化為:

int main()

if (j == i)

}printf("%d\n", count);

system("pause");

return 0;

}

3、境界3

除了2以外,所有可能的質因數都是奇數,先嘗試2,再嘗試從3開始直到x/2的所有奇數

int main()

if (j == i / 2)

} printf("%d\n", count);

system("pause");

return 0;

}

4、境界4

只要從2嘗試到sqrt(x)就可以,因為因數都是成對出現的,例如100的因數有:1和100、2和50、4和25、5和20、10和10,成對的因數,其中乙個必然小於等於100的開方,另乙個必然大於等於100的開方。

int main()

if (j>sqrt(i))

}printf("%d\n", count);

system("pause");

return 0;

}

5、境界5

只要嘗試小於sqrt(x)的素數即可,而這些素數,在前面已經算出,將已經算出的素數,先儲存起來,然後用於後續的試除,效率大大提高。

int main()

for (i = 0; i < 100; ++i) }

for (j = 1; j < 100; ++j) }

printf("%d\n", count);

system("pause");

return 0;

}

源**(github):

C語言基礎 素數判定和求解

一,素數的定義 在大於1的自然數中,除了1和它本身以外不再有其他因數的數。即對於數n,在2 n 1範圍內找不到乙個數i符合n i 0。二,根據以上定義,我們可以寫出判斷素數的函式 bool isprime int x return true 三,素數表列印 給出任意數n,求數2 n內的所有素數 co...

(C語言)判斷n是否為素數

題目 輸入乙個大於3的整數n,判斷它是否為素數。輸出yes no 例如,輸入4,輸出no 輸入7,輸出yes。錯誤輸入,則輸出error。所有輸出沒有回車符號。乙個只能被他自身或者1整除的數稱為素數 這裡還有乙個簡便的方法是 設乙個數m,m 不必被 2 m 1 之間的每乙個整數去除,只需被 2 之間...

C語言 N位絕對素數輸出

c語言 n位絕對素數輸出 首先,我們要了解什麼是絕對素數。素數是指在大於1的自然數中,除了1和它本身以外不再有其他因數的自然數。絕對素數是指本身是素數,其逆序數也是素數的數。例如 10321與12301是絕對素數。了解了這個概念之後,我們一步步來寫 我們寫乙個簡單的c語言素數程式,以100以內打個例...