GrozMaster > PHP > Определяем кратность одного числа другому. Распечатать

Определяем кратность одного числа другому.


3 декабря 2009. Разместил: GrozMaster

Иногда случаются ситуации, когда необходимо проверить кратность одного чиста другому. Как правило, это нужно при оформлении прайс-листов или каких либо списков, в которых было бы не плохо выделить каждую вторую или третью строчку для удобочитаемости.
Первое что приходит на ум новичку в программировании, это разделить одно число на другое, и вычесть целую часть результата из частного. Т.е. получить дробную часть от деления. А дальше все просто, если дробная ясть НЕ равна нулю, то число НЕ кратно второму. И наоборот. Если дробная часть равна нулю, то число кратно второму.
Допустим есть переменная $a, которую нужно проверить на кратность числу $b, тогда код будет выглядеть примерно так:

<?php
$x = $a / $b;
$y = intval ($x); // Выделяем целую часть от деления.
$z = $x - $y;
if ($z == 0) {
echo "Число $a кратно числу $b";
}else{
echo "Число $a НЕ кратно числу $b";
}
?>

Данную программу можно немного упростить, не делать лишнее вычисление, а проверить два числа $x и $y на равенство. Ведь, если результат деления и целая часть от этого деления равны, то и дробная часть, соответственно, будет равна нулю.
Тогда прогрмма проверки будет выглядеть так:

<?php
$x = $a / $b;
$y = intval ($x); // Выделяем целую часть от деления.
if ($x == $y) {
echo "Число $a кратно числу $b";
}else{
echo "Число $a НЕ кратно числу $b";
}
?>

Однако, умные люди за нас уже подумали и подобных схем выстраивать не обязательно.
Есть такое интересное математическое действие, которое обозначается в php (да и не только в php) как процент % (вместо знака деления).
Т.е. пишем $z = $a % $b;
В переменную $z будет записано значение дробной части от деления $a / $b.
В общем, выполнение одного данного деления заменяет собой сразу три вычисления:
$x = $a / $b;
$y = intval ($x); // Выделяем целую часть от деления.
$z = $x - $y;

Таким образом, первый рассмотренный вариант кода из восьми строчек сокращается до шести:

<?php
$z = $a % $b; // Присваиваем переменной $z дробную часть от деления $a / $b
if ($z == 0) {
echo "Число $a кратно числу $b";
}else{
echo "Число $a НЕ кратно числу $b";
}
?>

Данный код можно сократить на одну строчку, записав его следующим образом:

<?php
if (!($a % $b)) {
echo "Число $a кратно числу $b";
}else{
echo "Число $a НЕ кратно числу $b";
}
?>

В данном случае мы проверяем дробную часть от деления двух чисел на его отсутствие (восклицательный знак обозначает логическое "НЕ"). Если результат вычисления $a % $b НЕ имеет значения (или равен нулю), то число $a кратно $b иначе НЕ кратно.

или

<?php
if ($a % $b) {
echo "Число $a НЕ кратно числу $b";
}else{
echo "Число $a кратно числу $b";
}
?>

В этом случае мы проверяем некратность одного числа другому. Если результат деления $a % $b имеет какое то значение отличное от нуля, то число $a НЕ кратно $b иначе кратно.

Вернуться назад Распечатать