viernes, 23 de septiembre de 2011

Comprobar si un número es primo php


La función comprueba si un número es o no primo y devuelve TRUE o FALSE según sea el caso.

1function is_prime( $n ) {
2    $m = (int) sqrt( $n );
3    for$i = 2; $i <= $m$i++ ) {
4        if$n $i == 0 ) {
5            return( FALSE );
6        }
7    }
8    return( TRUE );
9}
Básicamente lo que hace es recorrer un bucle FOR dividiendo por todos los número naturales que estén situados entre el uno un la raiz cuadrada del propio número (ya que si es primo, no habrá divisores en este intervalo cerrado). Si encuentra un divisor finaliza directamente con FALSE, en caso contrario, cuanto haya terminado de recorrer todo el bucle devolverá TRUE, pues no ha encontrado ningún divisor.

Después de haber probado varios algoritmos diferentes, este es el más eficiente, aunque existen algunos un poco mejores si nos dirigimos a primos de Mersenne, por poner un ejemplo, pero para primos en general, al menos de los que he probado, este es el mejor.

No hay comentarios:

Publicar un comentario