Multiplos de 3 entre 2 y 20 PHP

publicado por: Anonymous

Me gustaría saber como puedo realizar una funcion para sacar los multiplos de 3 entre los numeros 2 y 20

No tengo muy claro todavía el tema de las funciones porque estoy comenzando a ello, por si alguien puede echar una mano.

Hasta el momento tengo esto:

for ($i = 2; $i <= 20; $i++) {
    echo $i; 
    if($i%3==0) {
       echo $i%3
    }
    else 
        break;

solución

El código está casi bien. Sólo que si pones un break el bucle se va a detener cuando lo encuentre. Si se trata de comprobar todos debes agotar todas la iteracciones.

Aquí te dejo una función que calcularía qué números entre $from y $to son múltiplos de $toCheck, devolviéndote un array solamente con los valores que son múltiplos.

function getMultiplos($from, $to, $toCheck)
{
    $allMultiplos=array();
    for ($i = $from; $i <= $to; $i++) 
    {
        if($i%$toCheck==0) {
          $allMultiplos[]=$i;
          echo "$i multiplo de $toCheck".PHP_EOL;
        }
        else
        {
           echo "$i no multiplo de $toCheck".PHP_EOL;
        }
    }
    return $allMultiplos;
}

Los echo son sólo para prueba, luego los puedes quitar.

Veamos una prueba:

$from=2;
$to=20;
$toCheck=3;

$arr=getMultiplos($from, $to, $toCheck);
print_r($arr);
#Puedes usar $arr para lo que necesites

Salida:

Los echo van a imprimir:

2 no multiplo de 3
3 multiplo de 3
4 no multiplo de 3
5 no multiplo de 3
6 multiplo de 3
7 no multiplo de 3
8 no multiplo de 3
9 multiplo de 3
10 no multiplo de 3
11 no multiplo de 3
12 multiplo de 3
13 no multiplo de 3
14 no multiplo de 3
15 multiplo de 3
16 no multiplo de 3
17 no multiplo de 3
18 multiplo de 3
19 no multiplo de 3
20 no multiplo de 3

Y el array resultante sería:

Array
(
    [0] => 3
    [1] => 6
    [2] => 9
    [3] => 12
    [4] => 15
    [5] => 18
)

Quizá habría que establecer otros controles en la función, como verificar que $from, $to y $toCheck son números, que $from es menor que $to y que $toCheck es un número positivo. Eso lo dejo a tu cuidado.

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *