У меня возник вопрос, как проверить, четное число или нет, только с помощью математических операций +, -, *, /, причем без использования циклов, буквально за пару действий на компьютере с ограниченной разрядностью.
Долго бился над решением и все таки его нашел.
Допустим, мы проверяем число Х.
Берем С = (3 * Х + 3) / 2. Если С делится на 3, тогда число нечетное, если не делится, тогда четное.
Например:
для 5, С = 9 делится на 3, нечетное
для 6, С = 8.5 не делится на 3, четное
для 7, К = 12, делится на 3, нечетное
для 8, К = 13.5, не делится на 3, четное
для 9, К = 15, делится на 3, нечетное
для 10, К = 16.5, не делится на 3, четное
А как проверить, делится ли число на 3? Учитывая, что разрядность компьютера ограничена, мы сначала делим Х на 3, а затем умножаем на 3, получаем К. Если К = Х, то число делится на 3, иначе не делится.
Вот все, вопрос решен.
Интересно, он когда-нибудь раньше поднимался или нет?
http://www.forum.mista.ru/topic.php?id=351998
LI 7.05.22 beta