【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个质数

猜你喜欢

转载自blog.csdn.net/studyphp123/article/details/82805935