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.