Código de PHP - Números primos

Imágen de perfil
Val: 1.009
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Números primosgráfica de visualizaciones


PHP

Actualizado el 16 de Febrero del 2020 por Xavi (548 códigos) (Publicado el 16 de Marzo del 2012)
113.537 visualizaciones desde el 16 de Marzo del 2012
Función que determina si un número es primo o no.

Un número primo es un número natural mayor que 1 que tiene únicamente dos divisores distintos: él mismo y el 1

Versión 1
estrellaestrellaestrellaestrellaestrella(4)

Publicado el 16 de Marzo del 2012gráfica de visualizaciones de la versión: Versión 1
75.037 visualizaciones desde el 16 de Marzo del 2012
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php
for($i=1;$i<=100;$i++)
{
    if(primo($i))
        echo "El número ".$i." es primo";
    else
        echo "El número ".$i." NO es primo";
}
 
/**
 * Función que determina si un numero es primo
 * Tiene que recibir el numero a determinar si es primo o no
 * Devuelve True o False
 */
function primo($num)
{
    $cont=0;
    // Funcion que recorre todos los numero desde el 2 hasta el valor recibido
    for($i=2;$i<=$num;$i++)
    {
        if($num%$i==0)
        {
            # Si se puede dividir por algun numero mas de una vez, no es primo
            if(++$cont>1)
                return false;
        }
    }
    return true;
}
?>



Comentarios sobre la versión: Versión 1 (4)

Laurenç
16 de Marzo del 2012
estrellaestrellaestrellaestrellaestrella
Muchisimas gracias por la solución.

Muy agradecido Xavi.

Saludos,
Laurenç
Responder
lioan
18 de Septiembre del 2015
estrellaestrellaestrellaestrellaestrella
realmente te falto algun que otro detalle. solo necesitas dividir por los impares pues todos los pares no son primos porque son divisibles por 2, por supuesto que tienes que validar que si el numero = 2 el resultado sea true. a la hora de recorrer los multiplos no tienes que ir hasta el valor que te pasaron con llegar hasta el valor entero de la raiz cuadrada del numero es suficiente pues si un numero no es divisible por los numeros menores de su raiz cuadrada no es divisible por los que siguen. aqui te dejo tu mismo codigo con los cambios que te sugiero que hagas.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php
for($ i= 1; $i <= 100; $i ++)
{
if(primo($i))
echo "El número ".$i." es primo";
else
echo "El número ".$i." NO es primo";
}
 
/**
* Función que determina si un numero es primo
* Tiene que recibir el numero a determinar si es primo o no
* Devuelve True o False
*/
function primo($num)
{
if($num == 2 || $num == 3 || $num == 5 || $num == 7)
{
return True;
}
else
{
if($num % 2 != 0)
{
for($i = 3; $i <= sqrt($num); $i += 2)
{
if($num%$i==0)
{
return False;
}
}
return True;
}
else
return False
}
}
?>
Responder
Fvria
8 de Octubre del 2015
estrellaestrellaestrellaestrellaestrella
Este, Prueba con el 4 ^^. El Algoritmo.

Dentro del for en la $i.
Responder
Jordi
14 de Septiembre del 2018
estrellaestrellaestrellaestrellaestrella
Una humilde aportación, aunque sea más complicada me parece más completa. Felicidades por la elegancia de tu código.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<!DOCTYPE html>
<html lang="ca">
<head>
    <meta charset="UTF-8">
    <title>Nombres_Prims.php</title>
</head>
<body>
    <h2>Calcula nombres primers en un rang donat per l'usuari</h2>
    <form action="" method="get">
        <p>El nombre d'inici ha de ser 1: 1<p/>
        <p>Introdueixi un nombre final: <input type="number" name="final" required value=100><p/>
        <input type="submit" value="Busca nombres primers.">
    </form>
 
    <?php
 
        $n_inici=1;
        $n_final=$_GET["final"];
 
        $llista=[1,2];//nombres pels quals dividirem els altres
 
        $n_primers=[1,2];//llista de nombres primers
 
        for($index=$n_inici;$index<=$n_final;$index++){
            //1, 2 i els parells no cal calcular-los
            if($index>2 && $index%2 !=0){
                //contador controla per quants és divisible index
                $contador=0;
 
                foreach($llista as $value){
 
                    if($index%$value==0){
                        $contador +=1;
                    }//end if
                }//end foreach
 
                if($contador==1){
                    //si contador ==1 llavors és nombre primer.
                    //afegim als primers.
                    $n_primers[]=$index;
                    //No afegim els que no són necessaris calcular
                    if(($index**2)<$n_final){
                        //afegim a la llista de càlcul
                        $llista[]=$index;
                    }//end if
                }//end if
            }//end if index>2
        }//end for
 
        echo"<p>Nombres primers que han participat en el càlcul:<p/>";
 
        foreach($llista as $calculats){
             echo"$calculats,";
        }
 
        echo"<p>Hem trobat <span style='color:blue;font-size:1.2em;'>".count($n_primers)."</span>"." nombres primers en el rang donat.<p/>";
 
 
        echo"<p>Llista de nombres primers entre $n_inici i $n_final:<p/>";
 
        foreach($n_primers as $primers){
            echo"$primers, ";
        }
 
    ?>
</body>
</html>
Responder

Comentar la versión: Versión 1

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad

Versión 2
estrellaestrellaestrellaestrellaestrella(2)

Publicado el 16 de Febrero del 2020gráfica de visualizaciones de la versión: Versión 2
38.501 visualizaciones desde el 16 de Febrero del 2020
http://lwp-l.com/s2166