Detect if input is a prime number in PHP - 关注最佳实践代码语法

Detect if input is a prime number in PHP - concerned with best practice code syntax

我正在教我妻子编程,所以我们制作了一个简单的素数检测器。

我们想到了这个,但我想知道是否有更好/更简洁的方法。我特别不喜欢用于显示结束语句的 0/1 开关。

//get n from URL
$n = $_GET['n'];

$j=2;
$prime=1;

while ($j<=($n/2)){

    if (is_int($n/$j)){ $prime=0;
        break;
    }

   $j++;

}

if ($prime==1) {echo "Yes! $n is a prime number";}
else {echo "No, $n is not a prime number";}

就显示结束语句的 'neater' 方式而言,您可以将其整理为:

echo ($prime) ? "Yes! $n is a prime number" : "No, $n is not a prime number";

此外,为了便于阅读,您可以使用布尔值 true/false 而不是 1 和 0,但这实际上只是您的偏好。

总是有简洁且对新手友好的正则表达式查找素数的方法:

$n = $_GET['n'];
echo "$n is ", preg_match('/^1?$|^(11+?)+$/', str_repeat('1', $n))
    ? "not " : "", "a prime number", PHP_EOL;

不严重,我的建议是稍微整理一下代码,这样更容易阅读:

  • 删除不必要的括号
  • $prime 重命名为 $isPrime
  • $j++改为$j = $j + 1
  • 对不是质数的 0、1 添加快速检查

像这样:

// Get parameter 'n' from URL
$n = $_GET['n'];

if ($n <= 1) {
    $isPrime = false;
}
else {
    $isPrime = true;
    $j = 2;

    while ($j <= $n / 2) {
        if (is_int($n / $j)) {
            $isPrime = false;
            break;
        }
        $j = $j + 1;
    }
}

if ($isPrime) {
    echo "$n is a prime number";
}
else {
    echo "$n is not a prime number";
}