Я хочу проверить, является ли число делимым 6 и если не я должен увеличить его, пока это не становится делимым.
как я могу сделать это?
Почему вы не используете оператор модуля ?
Попробуйте это:
while ($s % 6 != 0) $s++;
Или это то, что вы имели в виду ?--
<?
$s= <some_number>;
$k= $s % 6;
if($k !=0) $s=$s+6-$k;
?>
-121--1069358- if ($number % 6 != 0) {
$number += 6 - ($number % 6);
}
Оператор Оператор дает оставшуюся часть подразделения, поэтому доллар% 6 - это количество, оставленную при разделении на 6. Это будет быстрее, чем выполнение петли и постоянно перепроверяет.
Если уменьшение приемлемо, то это еще быстрее:
$number -= $number % 6;
$num += (6-$num%6)%6;
Нет необходимости в а пока цикла! Модуло (%) возвращает оставшуюся часть подразделения. Т.е. 20% 6 = 2. 6-2 = 4. 20 + 4 = 24. 24 делится на 6.
Просто запустите цикл while, который будет продолжать цикл (и увеличивать число) до тех пор, пока число не станет делимым на 6.
while ($number % 6 != 0) {
$number++;
}
Предполагая, что $foo
- это целое число:
$answer = (int) (floor(($foo + 5) / 6) * 6)
if ($variable % 6 == 0) {
echo 'This number is divisible by 6.';
}:
Сделайте делимым на 6:
$variable += (6 - ($variable % 6)) % 6; // faster than while for large divisors
для могила микрооптимирования:
if ($num % 6 != 0)
$num += 6 - $num % 6;
Больше оценок %
, но меньше ветвления / цикла. :-P
Почему бы вам не использовать оператор модуля ?
Попробуйте:
while ($s % 6 != 0) $s++;
Или вы это имели в виду?
<?
$s= <some_number>;
$k= $s % 6;
if($k !=0) $s=$s+6-$k;
?>
result = initial number + (6 - initial number % 6)
. Использование мода % (модуль) Оператор
if ($x % 6 == 0) return 1;
function nearest_multiple_of_6($x) {
if ($x % 6 == 0) return $x;
return (($x / 6) + 1) * 6;
}
Так что вы хотите, чтобы следующий кратнить 6, это то, что Это?
Вы можете разделить свой номер на 6, то CEIL
это, и умножьте его снова:
$answer = ceil($foo / 6) * 6;