Números primos, números perfectos y números pares usando PHP

enero 22, 2009 a las 3:54 pm | Publicado en Programacion | 5 comentarios
Etiquetas: , , , , , ,

En este ejercicio vamos a realizar lo siguiente.

Mediante un formulario vamos a ingresar un número cualquiera. Luego al procesar esta información vamos a obtener en una tabla una lista de números desde el número ingresado hasta el uno. Y de cada número de la lista nos va a indicar si el número es par o impar, si es perfecto o no lo es y si es primo o no.

El resultado será como el de la imagen que se muestra a continuación:

Resultado del programa

Resultado del programa

Ahora que tenemos una idea de lo que hará el programa vayamos al grano.

Primero vamos a crear los archivos PHP que contienen las funciones de paridad, número perfecto y número primo.

Vamos a crear la función que nos permitirá saber si el número es par o impar. Para lo que creamos el archivo func_paridad.php que contendrá el siguiente código:

<?php
function paridad($num) {
if ($num %2 == 0) {
return true;
}
else {
return false;
}
}
?>

Ahora vamos a crear el archivo que nos dirá si un número es primo o no. Para lo que creamos el archivo funcion_primo.php que contendrá el siguiente código:

<?php
function primo($num){
$cont = 0;
for($i = 1; $i <= $num; $i++){
//echo 3/2.»<br>»;

if($num % $i == 0){
//echo «$i <br>»;
$cont++;
}
}

if($cont==2){
return true;
}
else{
return false;
}
}
?>

Finalmente creamos el archivo func_perfecto.php que nos permitirá conocer si un número es perfecto o no mediante el siguiente código:

<?php

function perfecto($num){
for ($i=$num-1; $i>= 1; $i–){
if($num%$i==0){
$vec += $i;
}
}

if($vec == $num){
return true;
}
else{
return false;
}
}
?>

La función de paridad es muy simple para explicarla. Solo bastaría decir que el símbolo de porcentaje % nos da el valor del residuo de una división entre dos números.

La función del número primo fue explicado en «Números primos usando PHP».

La función para obtener el número perfecto utiliza un algoritmo bastante sencillo. Mediante un bucle usando el for estamos recorriendo los números que van desde el número que recibe la variable $num restado uno hasta el número uno.  Le restamos 1 a la variable $num por la definición de número perfecto:

Número perfecto es aquel que sumados sus divisores incluyendo el uno y excluyendo el número, es igual a si mismo.

Ahora estamos usando un acumulador para almacenar los divisores del número ingresado en la variable $vec. Finalmente hay que comparar, y si el número ingresado es igual al valor del acumulador entonces es un número perfecto.

Una vez que tenemos las tres funciones necesarias vamos a crear el formulario donde ingresaremos el  número. Para eso creamos el archivo formulario.html y dentro de la etiqueta <body> insertamos el siguiente código:

<form id=»form1″ name=»form1″ method=»post» action=»todititito.php«>
<table width=»355″ border=»0″>
<tr>
<td width=»183″>Ingrese Numero:</td>
<td width=»162″><label>
<input type=»text» name=»num» id=»num» />
</label></td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td colspan=»2″><label>
<div align=»center»>
<input type=»submit» name=»enviar» id=»enviar» value=»Enviar» />
</div>
</label></td>
</tr>
</table>
</form>

Como vemos dentro del action, este formulario va a llamar al archivo toditito.php este archivo contendrá el siguiente código:

<html>
<head>
<title>N&uacute;meros perfectos, pares y primos</title>
<style type=»text/css»>
<!–
.Estilo1 {
font-size: 24px;
font-weight: bold;
}
–>
</style>
</head>
<body>
<center>
<p class=»Estilo1″>N&Uacute;MEROS PRIMOS, PARES Y PERFECTOS</p>
<p>
<?php

//Llamamos a los archivos que contienen las funciones
include(«funcion_primo.php»);
include(«func_perfecto.php»);
include(«func_paridad.php»);

//Obtenemos en una variable el número ingresado en el formulario
$num_analiza = $_POST[«num»];

echo ‘<table border=»1″ width=»460″>’;
for($i = $num_analiza; $i >= 1; $i–){

//Almacenamos en un vector las operaciones que realiza cada función con los números del for
$resp_primo[$i] = primo($i);
$resp_perf[$i] = perfecto($i);
$resp_par[$i] = paridad($i);

echo ‘<tr>’;

//Verificamos si el número ingresado es primo o no
if ($resp_primo[$i] == true) {
echo ‘<td bgcolor=»#00CC99″><div align=»center»>’.$i.’ es primo </div></td>’;

//Contamos cuántos números primos hay en la lista
$cont_primo++;
}
else {
echo ‘<td><div align=»center»>’.$i.’ no es primo </div></td>’;
}

//Verificamos si el número ingresado es perfecto o no
if ($resp_perf[$i] == true) {
echo ‘<td bgcolor=»#FFFF66″><div align=»center»>’.$i.’ es perfecto </div></td>’;

//Contamos cuántos números perfectos hay en la lista
$cont_perf++;
}
else {
echo ‘<td><div align=»center»>’.$i.’ no es perfecto </div></td>’;
}

//Verificamos si el número ingresado es par o no
if ($resp_par[$i] == true) {
echo ‘<td bgcolor=»#FF9900″><div align=»center»>’.$i.’ es par </div></td>’;

//Contamos cuántos números pares hay en la lista
$cont_par++;
}
else {
echo ‘<td><div align=»center»>’.$i.’ no es par </div></td>’;
}

echo ‘</tr>’;
}
echo ‘</table>’;

//Desplegamos el valor de los contadores
echo ‘<br><br>’;
if ($cont_primo == 0) {
echo «No existen numeros primos en la lista»;
}
else {
echo «Existen $cont_primo numeros primos en la lista»;
}
echo ‘<br>’;
if ($cont_perf == 0) {
echo «No existen numeros perfectos en la lista»;
}
else {
echo «Existen $cont_perf numeros perfectos en la lista»;
}
echo ‘<br>’;
if ($cont_par == 0) {
echo «No existen numeros pares en la lista»;
}
else {
echo «Existen $cont_par numeros pares en la lista»;
}
?>
</p>
</center>
</body>
</html>

Luego podemos probar el programa usando el WAMP o el XAMPP.

5 comentarios »

RSS feed for comments on this post. TrackBack URI

  1. gracias por el programa me sirbio de mucho

  2. Voy a probarlo y despues les comento

  3. gracias x compartir el codigo 🙂

  4. gracias me sirvio estupendo espero que sigan les felicito

  5. gracias


Deja un comentario

Crea un blog o un sitio web gratuitos con WordPress.com.
Entries y comentarios feeds.