Generar un número primo en PHP
Para saber si un número es primo o no en PHP podríamos utilizar la siguiente función:
function isPrime($num){
$cont = 0;
for ($i=1; $i <= $num; $i++) {
if ($num % $i==0) $cont = $cont + 1;
}
if ($cont==2) return true;
return false;
}
Esta función funciona correctamente, por lo que podremos utilizarla para generar un número primo, de la siguiente forma:
function isPrime($num){
$cont = 0;
for ($i=1; $i <= $num; $i++) {
if ($num % $i==0) $cont = $cont + 1;
}
if ($cont==2) return true;
return false;
}
function getPrime(){
$result = false;
while(!$result){
$random = rand(0, 1000);
$es_primo = isPrime($random);
if($es_primo) $result = $random;
}
return $result;
}
echo 'Número primo generado: '.getPrime();
La función getPrime realiza un bucle, generando número aleatorios entre 0 y 1000 en este caso, y comprueba si es primo o no.
Aunque no es una forma muy óptima, se puede utilizar siempre y cuando utilicemos límites no muy grandes para generar el número aleatorio.