【PHP7 流程控制和函式 習題五】打印出100以內的質數,一行顯示5個,(質數是隻能被1跟自身整除的數,1不是質數)
阿新 • • 發佈:2018-12-11
一、解法一:
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); // 呼叫函式
以上三種情況的執行結果如下: