Here is a simple demonstration code to fine prime possibilities. On my 64 bit Linux box I can only go until 61, larger numbers causes warnings due to the EXP number:
<?php
for ($idx = 0; $idx <= 61; $idx++) {
$pow = (gmp_strval(gmp_pow('2', $idx)) - 1);
$prop = gmp_prob_prime($pow);
if ($prop > 0) {
echo 'idx=' . $idx . "\n--------\n";
echo 'pow=' . $pow . "\n";
echo 'prop=' . $prop . "\n------\n";
}
}
?>
By 'pow' is the possible prime number.
gmp_prob_prime
(PHP 4 >= 4.0.4, PHP 5)
gmp_prob_prime — Verifica se o número é "provavelmente primo"
Descrição
$a
[, int $reps
] )A função usa o teste probabilístico de Miller-Rabin para verificar se um número é primo.
Parâmetros
-
a -
O número a ser verificado como um primo.
Ele pode ser qualquer número GMP resource, ou uma string numérica que é possível convertê-la para um número.
-
reps -
Valores razoáveis de
repsvaria de 5 a 10 (padrão sendo 10); um valor mais alto diminui a probabilidade para um não-primo para passar como um "provável" primo.Ele pode ser qualquer número GMP resource, ou uma string numérica que é possível convertê-la para um número.
Valor Retornado
Se esta função retorna 0, a é
definitivamente não primo. Se ela retorna 1, então
a é "provavelmente" primo. Se retorna 2,
então a é certamente primo.
Exemplos
Exemplo #1 Exemplo da gmp_prob_prime()
<?php
// definitely not a prime
echo gmp_prob_prime("6") . "\n";
// probably a prime
echo gmp_prob_prime("1111111111111111111") . "\n";
// definitely a prime
echo gmp_prob_prime("11") . "\n";
?>
O exemplo acima irá imprimir:
0 1 2
