PHPで素数を判定する方法


以下に、シンプルで簡単な方法といくつかのコード例を示します。

  1. シンプルな方法: 素数を判定する一般的な方法は、与えられた数値を2からその数値の平方根までのすべての数で割ってみることです。もし割り切れる数が存在しなければ、その数は素数です。

以下は、このアプローチを使用したPHPのコード例です。

function isPrime($number) {
    // 2以下の数は素数ではない
    if ($number < 2) {
        return false;
    }
// 2は素数
    if ($number === 2) {
        return true;
    }
// 2以外の偶数は素数ではない
    if ($number % 2 === 0) {
        return false;
    }
// 3以上の奇数で割って割り切れるかをチェックする
    for ($i = 3; $i <= sqrt($number); $i += 2) {
        if ($number % $i === 0) {
            return false;
        }
    }
    return true;
}
// 使用例
$number = 17;
if (isPrime($number)) {
    echo $number . ' は素数です';
} else {
    echo $number . ' は素数ではありません';
}
  1. エラトステネスのふるいを使用する方法: エラトステネスのふるいは、指定された範囲内のすべての素数を見つけるための効率的なアルゴリズムです。以下に、このアプローチを使用したPHPのコード例を示します。
function sieveOfEratosthenes($n) {
    $isPrime = array_fill(2, $n - 1, true);
    for ($p = 2; $p * $p <= $n; $p++) {
        if ($isPrime[$p]) {
            for ($i = $p * $p; $i <= $n; $i += $p) {
                $isPrime[$i] = false;
            }
        }
    }
    $primes = [];
    for ($p = 2; $p <= $n; $p++) {
        if ($isPrime[$p]) {
            $primes[] = $p;
        }
    }
    return $primes;
}
// 使用例
$number = 17;
$primes = sieveOfEratosthenes($number);
if (in_array($number, $primes)) {
    echo $number . ' は素数です';
} else {
    echo $number . ' は素数ではありません';
}

これらの方法を使用することで、PHPで与えられた数値が素数かどうかを判定できます。どちらの方法も効率的で正確ですが、与えられた数値が大きい場合は、エラトステネスのふるいを使用する方が効果的です。