1. 程式人生 > >【PHP7 流程控制和函式 習題五】打印出100以內的質數,一行顯示5個,(質數是隻能被1跟自身整除的數,1不是質數)

【PHP7 流程控制和函式 習題五】打印出100以內的質數,一行顯示5個,(質數是隻能被1跟自身整除的數,1不是質數)

一、解法一:

1)思路:
  • 判斷是否是質數;
function is_prime($num)
{
    for ($i = 2; $i < $num; $i++) {
        // 判斷是否為質數
        if ($num % $i == 0) {
            return false;
        }
    }
    
    return $i;
}
  • 打印出100以內的質數;

  • 定義一個變數,接收每行的顯示個數,將所有的質數以每行5個顯示

$n = 0;
for ($i = 2; $i <= $num; $i++) {
    if (is_prime
($i)) { echo $i.' '; $n++; // 每行顯示5個 if ($n % 5 == 0) { echo '<br>'; } } }

2) 完整程式碼:
// 判斷是否為質數
function is_prime($num)
{
    for ($i = 2; $i < $num; $i++) {
        if ($num % $i == 0) {
            return false;
        }
    }
    
    return
$i; } $n = 0; // 每行顯示的個數 // 100以內的質數 for ($i = 2; $i <= 100; $i++) { if (is_prime($i)) { echo $i.' '; $n++; // 每行5個顯示 if ($n % 5 == 0) { echo '<br>'; } } }

二、解法二:

1) 思路:
  • 判斷是否為質數;
function is_prime ($num)
{
    for ($i = 2; $i <
$num; $i++) { if ($num % $i == 0) { return false; } } return $i; }
  • 輸出100以內的質數,將符合條件的質數,儲存到一個數組中;
$arr = [];
for ($i = 2; $i <= 100; $i++) {
    $res = is_prime($i); // 呼叫函式,判斷是否為質數
    if ($res) {
        $arr[] = $res;
    }
}
  • 將符合要求的質數,按每行5個輸出;
$count = count($arr);
for ($i = 0; $i < $count; $i++) {
    echo $arr[$i].' ';
    // 判斷每行的個數,是否為5個
    if (($i+1) % 5 == 0) {
        echo "<br>";
    }
}

2)完整程式碼:
// 判斷是否為質數
function is_prime($num)
{
    for ($i = 2; $i < $num; $i++) {
        if ($num % $i == 0) {
            return false;
        }
    }
    
    return $i;
}

$arr = []; 
// 輸出100以內的質數
for ($i = 2; $i <= 100; $i++) {
    $res = is_prime($i); // 呼叫函式判斷是否為質數
    // 將所有的質數,存入陣列中
    if ($res) {
        $arr[] = $res;
    }
}

// 每行顯示5個
$count = count($arr);
for ($i = 0; $i < $count; $i++) {
    echo $arr[$i].' ';
    // 判斷每行的個數,是否為5個
    if (($i+1) % 5 == 0) {
        echo "<br>";
    }
}

三、解法三:

/**
 * getPrimeNum 獲取指定範圍內質數,且每行顯示指定個數
 * @param  int $num  指定範圍值(確定的一個數)
 * @param  int $num2 每行顯示的個數
 */
function getPrimeNum($num, $num2)
{
    $cols = 0;
    
    // 1. 列印2-100之間所有的數
    for ($i = 2; $i <= $num; $i++) {
        // 2. 建立一個布林值,用來儲存結果(預設 $i 為質數)
        $flag = true; // 預設為質數
        
        // 3. 判斷 $i 是否是質數
        // 獲取 2~i 之間的所有的數
        for ($j = 2; $j < $i; $j++) {
            // 判斷 $i 能否被 $j 整除
            if ($i % $j == 0) {
                // 如果進入判斷,則證明 $i不是質數,修改 $flag的值 為false
                $flag = false;
            }
        }
        
        // 如果是質數,則列印 $i的值
        if ($flag) {
            echo $i. ' ';
            $cols++;
            
            // 每行顯示的個數 
            if ($cols == $num2) {
                $cols = 0;
                echo '<br>';
            }
        }
        
    }
}

$num = 100; 
$num2 = 5;
getPrimeNum($num, $num2); // 呼叫函式

以上三種情況的執行結果如下:

每行5個質數