saber primaria por para otro obtienen numeros numero multiplos multiplo los divisores divisible cuando como calcular php modulus

primaria - verificando si un número es divisible por 6 PHP



multiplos de numeros en php (11)

Quiero verificar si un número es divisible por 6 y si no, necesito aumentarlo hasta que se vuelva divisible.

Cómo puedo hacer eso ?


¿Por qué no usas el Modulus Operator ?

Prueba esto:

while ($s % 6 != 0) $s++;

¿O es esto lo que querías decir?

<? $s= <some_number>; $k= $s % 6; if($k !=0) $s=$s+6-$k; ?>


Entonces quieres el siguiente múltiplo de 6, ¿es eso?

Puedes dividir tu número por 6, luego ceil y multiplicarlo de nuevo:

$answer = ceil($foo / 6) * 6;


Para fanáticos de la micro-optimización:

if ($num % 6 != 0) $num += 6 - $num % 6;

Más evaluaciones de % , pero menos ramificación / bucle. :-PAG


Simplemente ejecute un ciclo while que continuará en bucle (y aumentará el número) hasta que el número sea divisible por 6.

while ($number % 6 != 0) { $number++; }


Suponiendo que $foo es un número entero:

$answer = (int) (floor(($foo + 5) / 6) * 6)


Use el operador modulus % (módulo)

if ($x % 6 == 0) return 1; function nearest_multiple_of_6($x) { if ($x % 6 == 0) return $x; return (($x / 6) + 1) * 6; }


Veo algunas de las otras respuestas llamando al módulo dos veces.

Mi preferencia es no pedirle a php que haga lo mismo más de una vez. Por esta razón, guardo en caché el resto.

Otros desarrolladores pueden preferir no generar la variable global adicional o tener otras justificaciones para usar el operador de módulo dos veces.

Código: ( Demo )

$factor = 6; for($x = 0; $x < 10; ++$x){ // battery of 10 tests $number = rand( 0 , 100 ); echo "Number: $number Becomes: "; if( $remainder = $number % $factor ) { // if not zero $number += $factor - $remainder; // use cached $remainder instead of calculating again } echo "$number/n"; }

Posible salida:

Number: 80 Becomes: 84 Number: 57 Becomes: 60 Number: 94 Becomes: 96 Number: 48 Becomes: 48 Number: 80 Becomes: 84 Number: 36 Becomes: 36 Number: 17 Becomes: 18 Number: 41 Becomes: 42 Number: 3 Becomes: 6 Number: 64 Becomes: 66


$num += (6-$num%6)%6;

no hay necesidad de un ciclo while! Módulo (%) devuelve el resto de una división. IE 20% 6 = 2. 6-2 = 4. 20 + 4 = 24. 24 es divisible por 6.


if ($variable % 6 == 0) { echo ''This number is divisible by 6.''; }:

Haz divisible por 6:

$variable += (6 - ($variable % 6)) % 6; // faster than while for large divisors


if($number %6 != 0) { $number += 6 - ($number % 6); }

El operador de modulus da el resto de la división, por lo que $ number% 6 es la cantidad restante cuando se divide por 6. Esto será más rápido que hacer un ciclo y volver a verificar continuamente.

Si la disminución es aceptable, esto es aún más rápido:

$number -= $number % 6;


result = initial number + (6 - initial number % 6)