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 — Revisa si el número es "probablemente primo"
Descripción
$a
[, int $reps = 10
] )La función usa la prueba probabilística de Miller-Rabin para revisar si un número es primo.
Parámetros
-
a -
El número a ser revisado como primo.
Puede ser tanto un número de resource GMP, o una cadena numérica dada que pueda ser convertida al final en un número.
-
reps -
Valores rasonables de
repsvarían de 5 a 10 (por defecto siendo 10); un valor superior disminuye la probabilidad para un número no primo a pasar como un "probable" primo.Puede ser tanto un número de resource GMP, o una cadena numérica dada que pueda ser convertida al final en un número.
Valores devueltos
Si ésta función devolvier 0, a es
definitivamente no primo. Si devuelve 1, entonces
a es "probablemente" primo. si devolviera 2,
entonces a es seguramente primo.
Ejemplos
Ejemplo #1 Ejemplo de gmp_prob_prime()
<?php
// definitivamente no primo
echo gmp_prob_prime("6") . "\n";
// probablemente primo
echo gmp_prob_prime("1111111111111111111") . "\n";
// definitivamente primo
echo gmp_prob_prime("11") . "\n";
?>
El resultado del ejemplo sería:
0 1 2
