Números impares

March 09, 06 by Max Villegas

Resulta que los duños de una de la páginas en que estoy trabajando querían hacer un truquillo para que si el día era par (2, 4, 6, etc.) los correos de un formualrio fuesen enviado a una dirección y si el día era impar (1, 3, 5, etc.) fuesen a otro email.

No era la primera vez que me enfrentaba a este sencillo dilema de los nones y pares (útil para ir alternando, por ejemplo, el background de los comentarios). Anteriormente había recurrido a trucos poco elegantes como hacer bucles dejando una variable que me sirviera de ancla al resetearla a 0 vuelta por medio.


$vuelta=0;

for ($i=0; $i<31; $i++){

if ($vuelta==0){
$background="#FFFFFF"; //hacer una cosa
$vuelta+= 1;
}
else{
$background="#000000"; //hacer otra
$vuelta = 0;
}

}

Otra posibilidad, tal vez menos burda que la anterior, era meter los números pares en un array para luego comprobar si el número del día estaba dentro o no.


$pares=array (2,4,6,8,10,12,14,16,18,20,22,24,26,28,30);
$dpi= date(d);

if (in_array ($dpi, $pares)) {
$background="#FFFFFF"; //hacer una cosa
else{
$background="#000000"; //hacer otra
}

Pero el que busca siempre encuentra. La verdad es que tenía el razonamiento claro (un número impar solo es divisible por si mismo para que de como resultado un número natural, el 1), pero no sabía como expreslo en PHP. Porbando a tientas ponía


if (!$num/$num){//es par}

if ($num/$num){//es impar}

Pero no daba, al final por ahí encontré una solución para javascript que me sirvió, dado que la sintaxis es prácticamente la misma. No sé mucho cómo va (para las matemáticas soy un asco), pero el caso es que dependiendo si el numero es par o impar “$dpi % 2″ arroja como resultado 0 ó 1. Y por cierto, como solución es mucho más elegante que las otras, incluso se podría usar para crear automáticamente lun array con números primos y otro con pares, por si llegase a ser necesario ir almacenando los números para su uso posterior.


$dpi= date(d);

if ($dpi % 2){
$background="#FFFFFF";
}else{
$background="#000000";
}

Tutoriales
Technorati tags: ,

No related posts.

  • http://www.estadobeta.com ismael

    Hola.
    Lo puedes resumir más todavía:

    $dpi= date(d);

    $background = $dpi % 2?”#FFFFFF”:”#000000″;

  • http://www.laweba.net Serumax

    Ismael, es un gusto verte por acá nuevamente. Justamente hace unos días, tratando de modificar un plugin, estuve tratando de reslover el misterio que me planteas. Ahora con tu ejemplo me ha quedado más que claro. Gracias.

  • Biel

    Hola!
    No quisiera ser descortés… pero como matemático tengo los pelos de punta!! :D

    La verdad es que tenía el razonamiento claro (un número impar solo es divisible por si mismo para que de como resultado un número natural, el 1), pero no sabía como expreslo en PHP.

    Qué?? Un número ___primo___ es sólo divisible por 1 y por si mismo!!! Pero un número impar cualquiera, ni mucho menos!! Por ejemplo, 9 es impar, y es divisible por 3.
    Además, tanto si el número es par, como impar, $num/$num siempre es = 1!!!

    De paso, te explico que hace el $dpi % 2.
    El % en php es la operación módulo. Esta operación devuelve como resultado el resto de la división. En este caso, el divisor es 2, y por lo tanto, si vale 0 quiere decir que el resto de la división es cero, y por lo tanto par. Si es 1, es impar.

    Bueno, de todas maneras, el blog está muy bien ;)

  • http://www.laweba.net Serumax

    Gracias por comentar.

    La idea es aprender entre todos… yo para las matemáticas soy nulo, debo reconocerlo. Esto de los impares era una de las cosas que más me complicaba para implementarlo PHP y la documentación es muy poca al respecto. La nota la hice con trozos de información que enconté a través de Google.

    Vuestra aclaración me parece excelente y si puedes orientarnos más con algún enlace donde se explique en profundidad se agradece.
    Saludos

  • http://SitioWeb SOUR

    Hola, mira yo también necesitaba algo similar a tí, aca hay un ejemplo que lo adecue a lo que yo necesitaba….imprime los números pares e impares desde el 1 al 5000, ahí puedes adecuarlo…suerte.

    $pares = 0;
    $impares = 0;
    for ($i=1; $i “;
    $pares++;
    }
    else {
    echo “El número $i es un número IMPAR “;
    $impares++;
    }
    }

  • SOUR

    el código quedo incompleto…. aca va otro….

    echo “Números Pares“;
    $pares = 0;
    for ($i=1; $i “;
    $pares++;
    }
    }

  • serumax

    Gracias por tu comentario.
    Mira la respuesta de Ismael, es mucho más sencillo de esa forma. Además esa sintaxis es práctica para muchos otros caso.

  • http://www.marketingmultimedia.cl/demo/test.php Marcos

    Mira yo en esta pagina probe este codigo:
    <?php
    $numero = $_POST['numero'];
    $division = $numero / 2;
    $resto = $numero % 2;
    switch($resto){
    case 1: $tipo = “Impar”;
    break;
    default: $tipo = “Par”;
    }

    echo”";
    echo”";
    echo”introduzca un numero para ver si es par o impar”;
    echo”";
    echo”";

    if($numero){
    echo “El resultado de la division es: “.$division;
    echo “El resultado del resto es: “.$resto;
    echo “El numero “.$numero.” es un numero “.$tipo;
    }
    ?>

    Pero con cifras sobre 10 digitos se equivoca dando todos impares.
    Alguna sugerencia?
    Gracias

  • http://www.ideasingular.com.ar Jota

    Una ayudita que me sirve en otro lenguaje: javascript.
    Si yo quiero un número par lo que hago es esto:

    if (numero % 2 == 0){
    document.write('El número es par)');
    }
    else {
    document.write('El número es impar');
    }

    Supongo que "echo" en php es lo equivalente a "document.write" en javascript.

    Lo que hace el código es verificar el módulo del número que le asignamos, puede ser 2, 3, 7, o lo que quieras…eso verifica por cual es "divisible".

    Todos sabemos que los números divisibles por 2 dan 0 y por eso son pares, y los demás no, por ende: impares!

    Es así de simple!

  • angelita

    numero in par

  • http://www.marketingandweb.es/marketing/curso-de-experto-en-seo/ marketing online

    marketing online…

    [...]Números impares | En la era digital | La Web A[...]…

blog comments powered by Disqus