gmp_prob_prime

(PHP 4 >= 4.0.4,PHP 5,PHP 7,PHP 8)

gmp_prob_prime检查数字是否为“可能素数”

描述

gmp_prob_prime(GMP|int|string $num, int $repetitions = 10): int

该函数使用 Miller-Rabin 的概率测试来检查数字是否为素数。

参数

num

要检查的素数。

一个 GMP 对象,一个 int 或一个数字 string

repetitions

repetitions 的合理值在 5 到 10 之间(默认值为 10);较高的值会降低非素数通过“可能”素数测试的概率。

一个 GMP 对象,一个 int 或一个数字 string

返回值

如果此函数返回 0,则 num 肯定不是素数。如果它返回 1,则 num “可能是”素数。如果它返回 2,则 num 肯定为素数。

示例

示例 #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

添加注释

用户贡献注释 1 个注释

florin dot ciuica at yahoo dot com
9 年前
<?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;
?>

基于此,获得了以下结果

1 - 100000 - 找到的确定素数:9592,可能的:0
1 - 1000000 - 找到的确定素数:78498,可能的:0
1 - 10000000 - 找到的确定素数:78498,可能的:586081
1 - 100000000 - 找到的确定素数:78498,可能的:5682957
1 - 1000000000 - 找到的确定素数:78498,可能的:50769036
1 - 2147483647 - 找到的确定素数:78498,可能的:105019067
To Top