【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

这里写图片描述

猜你喜欢

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