1. 程式人生 > >【PHP7 流程控制和函式 習題四】輸入一個整數,判斷這個數字是不是質數。

【PHP7 流程控制和函式 習題四】輸入一個整數,判斷這個數字是不是質數。

一、什麼是質數?

  質數又稱素數。一個大於1的自然數,除了1和它本身外,不能整除其他自然數的數叫做質數;否則稱為合數。

二、思路分析:

  • 定義一個表示,預設值為 true(預設為質數);
  • 判斷輸入的數是否大於零,若為否,則提示 “輸入正整數”;
  • 輸入的數不能為1,滿足則進行4,5步驟;不滿足則提示 “1不是質數”;
  • 迴圈符合條件的數:
    • 初始值從0開始;
    • $i(迴圈數) < $num(輸入的數);
    • 增量為1;
    • 判斷 $num(輸入的數) % $i(迴圈數) 是否為0,為0,則不是質數,且標誌 $flag = false,且 break跳出該迴圈
  • $flag = true 或者 $num(輸入的數) == 2
    ,則為質數

三、程式碼實現:

/**
 * getPrimeNum 判斷是否為質數
 * @param  int    $num  所要判斷的數
 */
function getPrimeNum($num)
{
    // 1. 定義一個標識,預設為 true(預設為質數)
    $flag = true;

    // 2. 判斷輸入的數是否大於零
    if ($num > 0) {

        // 3. 輸入的數不可為1(1既不是質數,又不是素數)
        if ($num != 1) {
            // 4. 迴圈符合條件的數
            for
($i = 2; $i < $num; $i++) { // 輸入的數 % 迴圈數 = 0 (說明可以被整除,不是質數) if ($num % $i == 0) { echo $num.'不是質數'; // 標識變為 false $flag = false; break; } } if ($flag
|| $num == 2) { echo $num.'是質數'; } } else { echo '1不是質數'; } } else { echo '請輸入正整數'; } } $num = 11; $res = getPrimeNum($num); // 呼叫函式 print_r($res);

執行結果:

傳入的數為0時,執行結果:

這裡寫圖片描述

傳入的數為1時,執行結果:

這裡寫圖片描述

傳入的數為11時,執行結果:

這裡寫圖片描述

傳入的數為12時,執行結果:

這裡寫圖片描述

四、簡單方法:

  由於1既不是質數,又不是素數,可以用迴圈,直接從2開始。

function is_prime($num)
{
    for ($i = 2; $i < $num; $i++) {
        if ($num % $i == 0) {
            return $num.'不是質數';
        }
    }

    return $num.'是質數';
}

echo is_prime(3);

執行結果:

傳入的數為3

這裡寫圖片描述

傳入的數為4

這裡寫圖片描述