ホームページ  >  記事  >  バックエンド開発  >  PHP 関数は数値が素数かどうかを効率的に判断するにはどうすればよいでしょうか?

PHP 関数は数値が素数かどうかを効率的に判断するにはどうすればよいでしょうか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-02 02:51:03662ブラウズ

How Can a PHP Function Efficiently Determine if a Number is Prime?

ループ内で素数を見つける公式

この質問は、ループ メカニズムを使用して素数を特定することを目的としています。具体的には、質問の目的は、素数を効率的に見つけるための PHP 関数を作成することです。

プロセスを理解するために、素数の概念を紹介しましょう。素数とは、1 とそれ自体を除く他の整数では割り切れない、1 より大きい整数です。

この定義は、素数をチェックする簡単な方法を提案しています。数値を 2 から 2 乗までのすべての整数で割ります。数値の根。これらの割り算のいずれかに余りがある場合、その数は素数になります。

質問の回答で提供されている PHP 関数は、次の概念に従っています。

<code class="php">function isPrime($num) {
    //1 is not prime. See: http://en.wikipedia.org/wiki/Prime_number#Primality_of_one
    if($num == 1)
        return false;

    //2 is prime (the only even number that is prime)
    if($num == 2)
        return true;

    /**
     * if the number is divisible by two, then it's not prime and it's no longer
     * needed to check other even numbers
     */
    if($num % 2 == 0) {
        return false;
    }

    /**
     * Checks the odd numbers. If any of them is a factor, then it returns false.
     * The sqrt can be an aproximation, hence just for the sake of
     * security, one rounds it to the next highest integer value.
     */
    $ceil = ceil(sqrt($num));
    for($i = 3; $i <= $ceil; $i = $i + 2) {
        if($num % $i == 0)
            return false;
    }

    return true;
}</code>

この関数は配列を利用して、数値の因数を計算し、割り算の余りをチェックします。剰余がゼロの場合、それは因数が存在することを示し、数値が素数ではなくなります。ただし、因数が見つからない場合、その数値は素数とみなされます。

以上がPHP 関数は数値が素数かどうかを効率的に判断するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。