vérifier si un nombre est divisible par 6 PHP
je veux vérifier si un nombre est divisible par 6 et, si non, j'ai besoin de l'augmenter jusqu'à ce qu'il devient divisible.
comment puis-je le faire ?
11 réponses
if($number %6 != 0) {
$number += 6 - ($number % 6);
}
module l'opérateur donne le reste de la division, donc $nombre % 6 est le montant restant lors de la division par 6. Ce sera plus rapide que de faire une boucle et de vérifier continuellement.
si décroissant est acceptable alors c'est encore plus rapide:
$number -= $number % 6;
if ($variable % 6 == 0) {
echo 'This number is divisible by 6.';
}:
Faire divisible par 6:
$variable += (6 - ($variable % 6)) % 6; // faster than while for large divisors
$num += (6-$num%6)%6;
pas besoin d'une boucle while! Modulo ( % ) retourne le reste d'une division. IE 20% 6 = 2. 6-2 = 4. 20+4 = 24. 24 est divisible par 6.
Mod % (module) de l'opérateur
if ($x % 6 == 0) return 1;
function nearest_multiple_of_6($x) {
if ($x % 6 == 0) return $x;
return (($x / 6) + 1) * 6;
}
je vois d'autres réponses appelant le modulo deux fois.
Ma préférence n'est pas de demander à php de faire la même chose plus d'une fois. Pour cette raison, je cache le reste.
D'autres Dev peuvent préférer ne pas générer la variable globale supplémentaire ou avoir d'autres justifications pour utiliser l'opérateur modulo deux fois.
Code: (Démo)
$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";
}
Sortie Possible:
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
lancez simplement une boucle while qui va continuer à boucler (et augmenter le nombre) jusqu'à ce que le nombre soit divisible par 6.
while ($number % 6 != 0) {
$number++;
}
en Supposant que $foo
est un entier:
$answer = (int) (floor(($foo + 5) / 6) * 6)
if ($num % 6 != 0)
$num += 6 - $num % 6;
Plus d'évaluations de %
, mais moins de ramifications / boucles. :- P