C語言程式判斷一個數是否為質數
質數是指只能被1和自身整除的數。一個數的因數是可以整除它的數。
前十個質數是:2, 3, 5, 7, 11, 13, 17, 23, 29, 31。
非質數稱為合數。合數是可以被多個數整除的數。
除了質數和合數之外,還有1,它既不是質數也不是合數,因為它只能被自身整除。
如何檢查一個數是質數還是合數?要檢查一個數是否為質數,需要檢查以下兩個條件:
1) 它必須是一個大於1的整數。
2) 它只能有兩個因數,即1和自身。
如果滿足這兩個條件,則該數為質數。
在我們的程式中,我們將透過將該數除以小於該數的每個數來進行檢查。如果任何小於給定數的數都能整除它,則它不是質數。否則,它是一個質數。
示例
讓我們以兩個數為例,並使用此方法檢查它們是否為質數。
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
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP