Inicio Apuntes FPApuntes DAWDesarrollo Web en Entorno Servidor Ejercicio Básico 17 PHP: Comprobación de números primos
php logo

Ejercicio Básico 17 PHP: Comprobación de números primos

por entreunosyceros
Publicado el: Última actualización:

El post de hoy lo voy a usar para publicar un pequeño programa que servirá para identificar números primos con PHP. El enunciado del ejercicio es el siguiente;

Crear un formulario donde el usuario introduzca números separados por comas y devuelva un mensaje en el que se indique cuales son primos. Hay que comprobar que el campo no esté vacío, pero omitiremos el resto de comprobaciones (por aquello de no tardar demasiado en hacerlo), ya que realizar estas comprobaciones no es muy complicado. El ejercicio se ha de realizar todo en el mismo archivo (index.php).

Código para comprobar números primos

    <?php
    if (isset($_POST['Enviar'])){ //con isset confirmamos que el formulario ha sido enviado correctamente
      if (empty($_POST['num'])){ //comprobación de los posibles campos vacíos
          echo "El campo números no puede estar vacío.<br>";
          echo "<a href='index.php' title='Volver'>Volver</a>"; //botón volver
      }else{
            $num=$_POST['num']; //se meten los números del formulario dentro de la variable num
            $arrayDatos = split(",", $num); //uso split para dividir el string por las comas, devuelve un array de cadenas
            $longitud = count($arrayDatos); //se cuenta el número de elmentos
            for($i=0;$i<$longitud;$i++){ //con este bucle recorremos el array aumentando el indice
                $cont=0; //el contador de divisores
              if($arrayDatos[$i]>0){
                if(is_numeric($arrayDatos[$i])){
                   
                 for ($j=1;$arrayDatos[$i]>$j;$j++){ //bucle para incrementar los divisores
                   
                    if($arrayDatos[$i]%$j==0){ //preguntamos por todos los posibles divisores del elemento
                    $cont++; //Si se puede dividir exactamente, añadimos uno al contador
                                 
                    }
                 }
               }else{
                   echo "Error. Tienen que ser números separados por comas.<br>";
                   continue;
               }
              }else{
                  echo "Error. Tienen que ser números POSITIVOS separados por comas.<br>";
                  continue;
              }
                if ($cont>=2){ //si el número de divisores es mayor o igual a 2 no es primo
                    echo "El numero ".$arrayDatos[$i]." NO es PRIMO <br>";
                }
                if ($cont<2){ //si el número de divisores es menor a dos es primo
                    echo "El numero ".$arrayDatos[$i]." es PRIMO <br>";
                }
         }
         echo "<a href='index.php' title='Volver'>Volver</a>"; //botón volver
     }  
    }else{
    ?>
      <form action="index.php" method="post" name="form" id="form"><!--Inicio formulario-->
       
          <table align="center" border="1" >  
                           
                <tr><!--línea del título-->
                    <td align="center" colspan="2" bgcolor="#f0f0f0">
                        <h2>
                           Escribe un conjunto de números separados por comas
                        </h2>
                    </td>
                </tr><!--Fin de la línea del título-->
               
                <tr><!--Línea números-->
                    <td bgcolor="#f0f0f0">Números: </td>
                    <td><input type="text" name="num" size="70" maxlenght="40" title="Números"/></td>
                </tr><!--Fin de la línea números-->
               
               <tr><!--línea del botones -->
                    <td align="center" bgcolor="#f0f0f0" colspan="2">
                        <input type="submit" value="enviar" name="Enviar" title="Enviar"  />
                         || 
                        <input type="reset" value="borrar" name="borrar" title="borrar" />
                    </td>
                </tr><!--Fin línea línea del botones-->
               
           </table><!--FIN de la tabla-->
         
        </form><!--Fin del formulario-->
    <?php
    } //se cierra el else aquí para que no se imprima el resultado del código php
    //al mismo tiempo que se imprime en pantalla el formulario.
    ?>


Es posible que esta no sea la forma más efectiva de realizar la comprobación de si son números primos o no, pero es la que se me ocurrió. Aquí queda para mis futuras consultas o por si a alguien le sirve para algo.


También te puede interesar ...

Deja tu comentario

* Al utilizar este formulario, acepta que este sitio web almacene y maneje sus datos.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.