首頁 >後端開發 >C++ >C程序用於檢查一個數是否為素數

C程序用於檢查一個數是否為素數

PHPz
PHPz轉載
2023-08-26 16:49:081382瀏覽

C程序用於檢查一個數是否為素數

素數是只能被兩個數字本身和一整除的數字。一個數的因數是能整除該數的數。

前十個質數的列表是 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中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除