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";
}
我正在教我妻子编程,所以我们制作了一个简单的素数检测器。
我们想到了这个,但我想知道是否有更好/更简洁的方法。我特别不喜欢用于显示结束语句的 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";
}