一、什么是质数?
质数又称素数。一个大于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