gmp_prob_prime

(PHP 4 >= 4.0.4, PHP 5)

gmp_prob_prime数が"おそらく素数"であるかどうかを調べる

説明

int gmp_prob_prime ( GMP $a [, int $reps = 10 ] )

この関数は、Miller-Rabin の確率的テストを使用して、 その数が素数かどうかを調べます。

パラメータ

a

素数かどうかを調べたい数。

PHP 5.5 以前での GMP 数リソース、PHP 5.6 以降での GMP オブジェクト、あるいは数値に変換可能な数値形式の文字列。

reps

reps の合理的な値は 5 から 10 くらいまで変動します (デフォルトは 10 です)。より大きい値を指定すると、素数でない数を 「おそらく素数である」と誤認識する可能性が小さくなります。

PHP 5.5 以前での GMP 数リソース、PHP 5.6 以降での GMP オブジェクト、あるいは数値に変換可能な数値形式の文字列。

返り値

この関数が 0 を返す場合、a は確実に素数ではありません。 1 を返す場合、a は「おそらく」 素数です。2 を返す場合、a は確実に素数です。

例1 gmp_prob_prime() の例

<?php
// 明らかに素数ではありません
echo gmp_prob_prime("6") . "\n";

// おそらく素数です
echo gmp_prob_prime("1111111111111111111") . "\n";

// 明らかに素数です
echo gmp_prob_prime("11") . "\n";
?>

上の例の出力は以下となります。

0
1
2

add a note add a note

User Contributed Notes 1 note

up
0
florin dot ciuica at yahoo dot com
29 days ago
<?php
    $max
= 2147483647;
   
   
$primesFound = 0;
   
$probablePrimes = 0;

    for (
$x = 1; $x <= $max; $x++) {
       
$primeStatus = gmp_prob_prime($x);
        if (
$primeStatus == 1) {
           
$probablePrimes++;
        } else if (
$primeStatus == 2) {
           
$primesFound++;
        }
    }
    echo
"Total primes found: " . $primesFound . " between 1 and " . $max . ". Probable primes in this interval: " . $probablePrimes;
?>

Based on that the following results were obtained:

1 - 100000      - certain primes found: 9592,     probable: 0
1 - 1000000     - certain primes found: 78498,    probable: 0
1 - 10000000    - certain primes found: 78498,    probable: 586081
1 - 100000000   - certain primes found: 78498,    probable: 5682957
1 - 1000000000  - certain primes found: 78498,    probable: 50769036
1 - 2147483647  - certain primes found: 78498,    probable: 105019067
To Top