素數是只能被兩個數字本身和一整除的數字。一個數的因數是能整除該數的數。
前十個質數的列表是 2,3,5,7,11,13,17,23,29,31。
非質數是合數。合數是可以被兩個以上的數整除的數。
如果是質數和合數,則 1 既不是質數也不是合數,因為它只能被自身整除。
如何檢查一個數是否為質數或合數 要檢查一個數是否為質數,應檢查兩個條件
1)它應該是大於 1 的整數。
2)它應該只有兩個因子,即一和數字本身。
如果滿足這兩個條件,那麼我們可以說一個數字是質數。
在我們的程式中,我們將檢查該數字除以每個小於該數字的數字。如果任何小於給定數的數能整除該數,則該數不是質數。否則,它是素數。
讓我們以兩個數字為例,並使用此程序檢查它們是否是質數。
Input − Number1 − 42 Output − 42 is not a prime number
邏輯 - 我們將 42 除以每個大於 1 且小於 42 的數字。因此,
42/2 = 21 即 42 可以被 2 整除,這意味著 42 不是質數,因為它可以被另一個數字整除。
Input − Number2 − 7 Output − 7 is a prime number
邏輯 - 我們將用 7 除以每個大於 1 且小於 7 的數字。因此,
7 不能被2 整除,因此程式碼將檢查下一個數字,即3
7 不能被3 整除,因此程式碼將檢查下一個數字,即4
7 不能被4 整除,因此程式碼將檢查下一個數字,即5
>7 不能被5 整除,因此程式碼將檢查下一個數字,即6
7 不能被6 整除,這意味著7 只能被1 整除,7 意味著7是一個質數。
看一下上面的邏輯,這個數字是 1000 加還是 100000 加那麼程式將在 for 迴圈中進行多次迭代,此方法將花費大量計算時間。因此,為了減少迭代次數,它們必須是更好的方法。
對此的最佳化解決方案是只運行一半循環。這意味著如果數字為 77,則循環將僅運行到 38。這將減少所需的迭代次數,因此我們將使用此演算法來建立程式。
#include <stdio.h> int main() { int num = 33, flag = 0; for(int i=2 ; i < num/2 ; i++) { if(num%i == 0) { printf("%d is not a prime number", num); flag = 1; break; } } if(flag == 0) { printf("%d is a prime number", num); } }
33 is a prime number
以上是C程序用於檢查一個數是否為素數的詳細內容。更多資訊請關注PHP中文網其他相關文章!