【PHP7 流程控制和函式 習題四】輸入一個整數,判斷這個數字是不是質數。
阿新 • • 發佈:2018-12-10
一、什麼是質數?
質數又稱素數。一個大於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