PHP Conference Nagoya 2025

gmp_prob_prime

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

gmp_prob_primeVerifica se o número é "provavelmente primo"

Descrição

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

A função usa o teste probabilístico de Miller-Rabin para verificar se um número é primo.

Parâmetros

num

O número a ser verificado como um primo.

Um objeto GMP, um int ou uma string que possa ser interpretado como um número seguindo a mesma lógica como se a string fosse usada em gmp_init() com detecção automática de base (ou seja, quando base é igual a 0).

repetitions

Valores razoáveis de repetitions variam de 5 a 10 (o padrão é 10); um valor mais alto diminui a probabilidade de um não-primo passar como um "provável" primo.

Um objeto GMP, um int ou uma string que possa ser interpretado como um número seguindo a mesma lógica como se a string fosse usada em gmp_init() com detecção automática de base (ou seja, quando base é igual a 0).

Valor Retornado

Se esta função retornar 0, num definitivamente não é primo. Se retornar 1, num é "provavelmente" primo. Se retornar 2, num com certeza é primo.

Exemplos

Exemplo #1 Exemplo de gmp_prob_prime()

<?php
// definitivamente não é primo
echo gmp_prob_prime("6") . "\n";

// provavelmente um primo
echo gmp_prob_prime("1111111111111111111") . "\n";

// definitamente é primo
echo gmp_prob_prime("11") . "\n";
?>

O exemplo acima produzirá:

0
1
2

adicione uma nota

Notas Enviadas por Usuários (em inglês) 1 note

up
3
florin dot ciuica at yahoo dot com
10 years 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