2024年PHP大会日本站

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

该函数使用米勒-拉宾概率测试来检查一个数字是否为素数。

参数

num

被检查为素数的数字。

一个GMP对象,一个int,或者一个string,可以解释为一个数字,其逻辑与在gmp_init()中使用字符串并自动检测基数(即base等于0时)相同。

repetitions

repetitions的合理值范围为5到10(默认值为10);较高的值会降低非素数被判为“可能”素数的概率。

一个GMP对象,一个int,或者一个string,可以解释为一个数字,其逻辑与在gmp_init()中使用字符串并自动检测基数(即base等于0时)相同。

返回值

如果此函数返回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
10年前
<?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
"找到的素数总数: " . $primesFound . " (1 到 " . $max . ")。此区间内可能的素数: " . $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