0. Введение
Прошла статья ( Михаил Елисейкин «Революция вайб-кодинга отменяется» - https://habr.com/ru/articles/938440/ ) взорвала чарты и вышла в топы Хабра, а такое часто сопровождается бурным обсуждением, с уходом в оффтопик. И вот там в обсуждении выплыла тема «ноль чётное число или нет?», в которой ответ на вопрос не особо то и нужен, но вот сама тема, является отличной иллюстрацией проблем «верификационизма», как парадигмы научного познания.

1. А есть ли проблема?
Как я уже сказал, ответ на этот вопрос не особо нужен, если вы прямо сейчас не сдаёте ЕГЭ. но и там этой проблемы нет — при ЕГЭ важно не то, правильный ответ или нет, а то, сочтёт ли система ваш ответ правильным. Поэтому, смело отвечаете «ноль является чётным числом». По факту, у нас есть определение «если число делится на 2 нацело, то оно чётное», и для ответа на вопрос ЕГЭ о чётности нуля этого более чем достаточно.
А вот в плане философии научного познания возникает сложность — чётность нуля соответствует основному определению, то есть «верифицируема», но не проходит проверку вопросом «а что если нет?». Сейчас мы не будем обсуждать, является ли этот вопрос «фальсифицируемостью» и до какой ступеньки пост-пост-...-пост-позитивизма мы добрались, потому что вопрос «а что если нет?» является сугубо утилитарным, особенно на Хабре, ресурсе посвящённом программной реализации логики и проверки разных цифровых сущностей на наличие или отсутствие у них тех или иных свойств.
Ведь может же быть так, что программист написал проверку на принадлежность сущности к множеству, а она не работает в режиме «все сущности множества и только они». Ну, чего-то не учёл или произошёл какой-то сбой.
Например, проверка подтвердила, что «серое животное, с четырьмя ногами, одним хвостом и одной головой» является «собакой», а в свойстве «масса» написано «6 тонн». Дальше идём проверять, правильно ли у нас прописаны условия, и не произошла ли у нас проблема с форматом записи «6,000 кг», обработанном системой как «6 тысяч килограмм». А то ведь, не смотря на соответствие условиям, наша «собака» может оказаться «слоном».
Ну или, например, мы заходим в комнату и видим часы, стрелки которых показывают 8 часов 17 минут. Смотрим на смартфон и видим там то же самое время. Казалось бы, мы валидировали стрелочные часы и убедились в том, что они нормально работают.
Проблема в том, что часы могут «стоять» и всё время показывать 8 часов 17 минут, и лишь случайно эти показания совпали с реальностью именно в момент проверки. Поэтому, мы говорим себе «а что если нет?» и кроме метода «в момент проверки время совпало с эталонным» изучаем свойства исследуемых часов и проверяем, соответствуют ли они тому, что из себя должны представлять такие объекты.
- они прямо сейчас тикают.
- 17 минут назад они пробили 8 часов
- если подождать пару минут, то стрелки сдвинутся
- там есть секундная стрелка, движение которой сразу заметно
И это я ещё не поднял вопрос о том, что на смартфоне мы видим не часы, а статичную картинку.
Вобщем, давайте используем этот же подход к ситуации основной метод подтвердил чётность, но чтобы не поиграться и не потренироваться в проверку того, что кажется нам очевидным.
Проверяем.
2. Проверка умножением
Возьмём в качестве примера ровное число 16 и посмотрим на его чётность.
16/2=8 — чётное
В текстовом виде это можно сформулировать как «16 это 2 раза по 8», что значит «16 это ДВА, И ТОЛЬКО ДВА, раза по 8». То есть, мы можем гарантировано и однозначно собрать 16 (ДЕЛИМОЕ) из 8 (ЧАСТНОЕ) в количестве 2 (ДЕЛИТЕЛЬ).
А что если нет?
Меняем 2 на другие числа.
1*8=8 — неверно
2*8=16 - верно
3*8=24 - неверно
Таким образом, мы подтвердили, что делили 16 именно 2, а не на какое-то другое число. ТО есть, наше изначальное вычисление не было неверным.
Проверяем 0 (ноль) на чётность.
0/2=0
А что если нет?
Меняем 2 на другие числа.
1*0=0 - верно
2*0=0 - верно
3*0=0 - верно
При подстановке заведомо неверных значений делителя, наша проверка выдаёт положительный результат.
Это значит, что проверки у нас нет и мы не можем подтвердить, что наше изначальное деление 0 на 2 дало однозначный верный результат.
Вы конечно же скажете, что эта проверка замечательно работает в случае с другими чётными числами. Да, именно так, эта проверка работает со всеми чётными числами, кроме нуля.
3. Проверка делением
Мы можем легко записать формулу a/b=c в виде a/c=b , и при этом равенство будет оставаться верным . На этой возможности держится если не вся математика, то уж точно та её часть, в которой поднимается вопрос о чётности нуля.
Чтобы было понятней, напишу так
Дано: A/x=B . Найдите «x». Ответ: A/B=x .
Что нам даёт тождественность этих записей?
Если оба выражения одинаково верны, то, не зная верность первого выражения, мы можем проверить верность второго.
Пробуем с 16.
16/2=8 - А что если нет?
вжух
16/8=2 — верно
Оба выражения верны.
Пробуем с 0 (ноль)
0/2=0 - А что если нет?
вжух
0/0=2 - … неизвестно
У нас снова нет возможности использовать этот способ для проверки того, действительно ли верно выражение 0/2=0.
Вы конечно же скажете, что эта проверка замечательно работает в случае с другими чётными числами. Да, именно так, эта проверка работает со всеми чётными числами, кроме нуля.
4. Проверка чётного нечётным - 1
Кроме определения, как я уже говорил, у элементов множества могут быть закономерные и неизбежные свойства, обязательные для всех элементов множества.
И у чётных и нечётных чисел есть такие свойства, которые проявляются в их взаимодействии с нечётным.
Речь вот про это:
(чётное)*(нечётное)=(чётное)
(нечётное)*(нечётное)=(нечётное)
Эти свойства легко использовать в проверке по методу А что если нет?
Рассмотрим числа: 16,15,1,0 и представим, что не можем определить их чётность/нечётность очевидным способом. Всех остальных можем, а этих не получается.
Делаем манёвр и заходим с неочевидной стороны.
Берём число 3(три) в качестве второго сомножителя в указанных выше формулах и проверяем.
16*3=48 — результат чётный, значит тестируемое число чётное
15*3=45 — результат нечётный, значит тестируемое число нечётное
1*3=3 — результат нечётный, значит тестируемое число нечётное
Пока всё верно, да?
Переходим к 0 (ноль)
0*3=0 — результат… неизвестный, потому что на выходе у нас ровно то же самое число 0(ноль), для которого мы, по условиям, не умеем определять чётность/нечётность. Проверка не работает.
Что характерно, для 1 эта проверка тоже работает, не смотря на особый статус этого числа.
Вы конечно же скажете, что эта проверка замечательно работает в случае с другими чётными числами. Да, именно так, эта проверка работает со всеми чётными числами, кроме нуля.
5. Проверка чётного нечётным — 2
Так как проверка на чётность это проверка делением, то можно использовать свойства с делением.
(Кстати, если Вам покажется, что деление из раздела «5. Проверка чётного нечётным — 2» является инвариантом умножения из раздела «4. Проверка чётного нечётным — 1», то Вам не кажется. Это, действительно, разные записи одного равенства. Именно об этом и шла речь в разделе «3. Проверка делением».)
Результат операций деления без остатка не гарантирован, в отличии от операции умножения, поэтому наша проверка выглядит вот так.
(чётное)/(нечётное) => если целое число, то (чётное)
(нечётное)/(нечётное) => если целое число, то (нечётное)
Используем числа из предыдущего раздела 48, 35 (что добру пропадать) и 0(ноль), и вновь представляем, что не можем определить их чётность/нечётность очевидным способом. Всех остальных можем, а этих не получается.
В качестве делителя используем всё то же число 3(три).
48/3=16 — результат чётный, значит тестируемое число чётное
45/3=15 — результат нечётный, значит тестируемое число нечётное
Снова работает!
Переходим к 0 (ноль)
0/3=0 — результат… неизвестный, потому что на выходе у нас ровно то же самое число 0(ноль), для которого мы, по условиям, не умеем определять чётность/нечётность. Проверка не работает.
Вы конечно же скажете, что эта проверка замечательно работает в случае с другими чётными числами. Да, именно так, эта проверка работает со всеми чётными числами, кроме нуля.
6. Ну давай уже, вещай истину
Вещаемая же истина будет скучной.
Тема чётности нуля интересна не тем, что именно является ответом на её основной вопрос, а примерами того, что как можно и нужно делать перепроверки, казалось бы, очевидного варианта, и что эти проверки могут не работать.
Не «давать противоположный результат», а « не давать никакого результата, но давать иллюзию подтверждения». Как те самые «стоящие» стрелочные часы, на которые мы посмотрели в тот самый момент, когда время на них совпало с реальным.
А ещё это отличный пример того, что две, казалось бы, равнозначные истины могут иметь разную степень обоснованности и подтверждённости. И 16 и 0(ноль) одинаково успешно проходят основную проверку делением на 2, но 0(ноль) не проходит часть дополнительных проверок, которые проходит 16.
Вот эти вот знания, могут оказаться полезными для общего развития и эрудиции.
А чётность нуля? Да вообще пофиг!
Михаил Елисейкин
2025-08-25