Артур Бенджамин - Магия математики: Как найти x и зачем это нужно
Проблема в том, что более точная длительность астрономического года – 365,243 (что примерно на 11 минут меньше 365,25), поэтому високосных годов получается чересчур много. За четыре сотни оборотов вокруг Солнца человечество проживает 146 097 дней, а юлианский календарь насчитывает 400 × 365,25 = 146 100 дней (что на три дня больше). Эту проблему (как и проблемы, связанные с определением дня Пасхи) попытался решить в 1582 году папа римский Григорий XIII, представив свой вариант календаря, впоследствии названный григорианским. И именно по этой самой причине в этом самом году католики всего мира убрали из своего летоисчисления десять дней. Например, в Испании после юлианского четверга 4 октября 1582 года последовала григорианская пятница, ставшая 15 октября 1582 года. После введения григорианского календаря годы, числовые значения которых можно разделить без остатка на 100, но при этом нельзя разделить без остатка на 400, перестали быть високосными (что позволило убрать лишние три дня). Следовательно, 1600 год в григорианском календаре оставался високосным, а вот 1700-й, 1800-й и 1900-й этот статус потеряли. Точно так же 2000-й и 2400-й – високосные, а 2100-й, 2200-й и 2300-й – нет. Согласно этой системе, каждые четыре сотни лет мы имеем 100 – 3 = 97 високосных годов или (400 × 365) + 97 = 146 097 дней, что точно соответствует астрономической истине.
Некоторые страны – в основном, некатолические – далеко не сразу приняли григорианский календарь. Англия вместе со своими колониями, например, перешла на него только в 1752 году, когда за средой 2 сентября сразу же последовал четверг 14 сентября (обратите внимание, что они «потеряли» 11 дней, а не десять, потому что пропустили 1700 год, который в юлианском календаре был високосным, а в григорианском – обычным). Всемирное же распространение григорианский календарь получил только в 1920 году. Представьте, какой головной болью это стало для историков. Мой любимый исторический парадокс – смерти Уильяма Шекспира и Мигеля де Сервантеса, которые по справочникам случились в один день, 23 апреля 1616 года, а на деле – с разницей в десять дней. Все это как раз из-за того, что к моменту смерти Сервантеса Испания уже пользовалась григорианским календарем, а Англия – все еще юлианским. То есть григорианское 23 апреля 1616 года в Испании было юлианским 13 апреля 1616 года в Англии, где жил (и прожил еще десять дней) Шекспир.
Формула определения дня недели по любой дате григорианского календаря выглядит так:
День недели ≡ код месяца + дата + код года (mod 7)Давайте разберемся, что здесь к чему. Все это имеет смысл, если формула использует модульную арифметику по модулю 7 (поскольку в неделе 7 дней). Например, если нас интересует дата через 72 дня, день недели будет на два впереди от сегодняшнего, потому что 72 ≡ 2 (mod 7). А вот дата через 28 дней придется на тот же день недели, потому что 28 делится на 7 без остатка.
Начнем, пожалуй, с кодов дней недели – их легче всего запомнить:
По большому счету, здесь и запоминать-то ничего не надо: все точно соответствует привычной нам системе (ну, кроме воскресенья, которое, кроме 7, может быть и 0)[5].
Отступление[6]Откуда пошли английские названия дней недели? Корнями они уходят в традиции Вавилонского царства, где были связаны с именами Солнца, Луны и пяти других ближайших к Земле небесных тел. От Солнца (англ. Sun) произошло воскресенье (англ. Sun-day), от Луны (англ. Moon) – понедельник (англ. Mon-day), от Сатурна – суббота (англ. Satur-day). Остальные названия легче найти во французском или, скажем, испанском языках. Так, Марс (лат. Mars) превратился во французское Mardi и испанское Martes (вторник), Меркурий (лат. Mercurius) – в Mercredi и Miércoles (среда), Юпитер (лат. Jupiter) – в Jeudi и Jueves (четверг), Венера (лат. Venus) – в Vendredi и Viernes (пятница). Обратите внимание, что и Марс, и Меркурий, и Юпитер, и Венера – не только названия планет, но и имена древнеримских богов. Английский же язык благодаря своему германскому происхождению перенял названия оставшихся четырех дней недели из скандинавской мифологии, в которой бога войны Марса звали Тиу (англ. Tiw), отца богов Юпитера – Тором (англ. Thor), его сына Меркурия – Одином (англ. Woden), а богиню любви и плодородия Венеру – Фрейей (англ. Freya). Так и появились «день Тиу» – вторник (англ. Tues-day), «день Одина» – среда (англ. Wednes-day), «день Тора» – четверг (англ. Thurs-day) и «день Фрейи» – пятница (англ. Fri-day).
А вот с кодами месяцев мороки чуть больше, поэтому здесь я приведу «запоминалки» – подсказки, основанные на ассоциации.
Откуда берутся эти цифры, я объясню чуть позже – сначала разберемся с вычислениями. Единственный код года, который вам пока нужно знать, – 0 для 2000 года. Давайте попытаемся посчитать, на какой день недели пришлось в этом году 19 марта (мой день рождения, кстати). Код марта у нас – 2, код 2000 года – 0, подставляем их в нашу формулу и получаем
День недели = 2 + 19 + 0 = 21 ≡ 0 (mod 7)Значит, 19 мая 2000 года было воскресеньем.
ОтступлениеБыстренько объясним, откуда берутся коды месяцев. Обратите внимание, что в невисокосные годы коды февраля и марта совпадают. Объясняется это тем, что в феврале 28 дней, а значит, 1 марта наступает через 28 дней после 1 февраля – то есть оба эти месяца начинаются в один и тот же день недели. А теперь смотрите: 1 марта 2000 года было средой. Поэтому, если мы присвоим 2000 году код 0, а понедельнику – код 1, марту просто некуда деваться, как получить код 2. Поэтому в невисокосный год кодом февраля тоже должна быть двойка. А раз в марте у нас 31 день, что ровно на 3 больше февральских 28, календарь апреля сдвигается по неделе на 3 дня вперед, то есть код получается 2 + 3 = 5. Дальше мы добавляем апрельские 28 + 2 к коду 5 и видим, что код мая должен быть 5 + 2 = 7, которые мы можем заменить на 0, раз уж наш модуль – 7. Точно так же мы можем определить коды и всех остальных месяцев.
С другой стороны, в феврале високосного года (а 2000 год был високосным) 29 дней, поэтому календарь марта убегает только на один день вперед, а код такого февраля будет 2 – 1 = 1. В январе 31 день, поэтому его код в невисокосном году должен быть на три единицы меньше кода февраля: 2 – 3 = –1 ≡ 6 (mod 7). В високосный же год получается на единицу меньше: 1 – 3 = –2 ≡ 5 (mod 7).
Что происходит с вашим днем рождения от года к году? Если забыть про високосные годы, между двумя днями рождения проходит 365 дней, то есть каждый раз эта дата смещается на один день вверх по неделе, потому что 365 ≡ 1 (mod 7), а 365 = 52 × 7 + 1. Но когда между ними «вклинивается» 29 февраля, если вы, разумеется, не родились именно 29 февраля, смещение составит не один день, а два. Соответственно, к коду года в нашей формуле мы просто добавляем 1. Или 2, когда дело доходит до високосного года. Вот коды годов с 2000-го по 2031-й. Не переживайте. Их вам запоминать не придется.
Обратите внимание, что мы идем просто по порядку – 0, 1, 2, 3 и т. д., – перескакивая через единицу для високосного года. Так происходит в случае с 2004-м, кодом которого вместо 4 будет 5, 2005-й тогда получает код 6, а 2007-й должен бы получить 7, но, так как мы с вами работаем по модулю 7, возвращаемся обратно к 0, Поэтому код 2007-го – 1, а 2008-го (високосного) – 3.
И так далее. С помощью этой таблицы мы легко определим, что в 2025 году (это ближайший год, числовое обозначение которого является квадратом числа), день числа Пи (14 марта) придется на
День недели = 2 + 14 + 3 = 19 ≡ 5 (mod 7) = ПятницаА как насчет 1 января 2008 года? Не забудьте, что год этот – високосный, а значит, код января будет 5, а не 6. Следовательно:
День недели = 5 + 1 + 3 = 9 ≡ 2 (mod 7) = ВторникПосмотрите еще раз на таблицу вдоль ее рядов, и увидите, что каждый раз, когда проходит 8 лет, код года повышается на 3 (по модулю 7). Например, годы в первом ряду имеют коды 0, 3, 6, 2 (двойка по модулю 7 – это та же девятка). Происходит это потому, что за период в 8 лет нам обязательно попадается два високосных года, поэтому даты смещаются на 8 + 2 = 10 ≡ 3 (mod 7).
А вот кое-что еще более интересное. С 1901 по 2099 год через каждые 28 лет календарь повторяется один в один. Знаете, почему? Из 28 лет 7 – всегда високосные, поэтому календарь смещается на 28 + 7 = 35 дней, а 35 – число, кратное 7, что и обеспечивает повторяемость дней недели (закономерность эта нарушится, если мы опустимся ниже 1900 года или поднимемся выше 2100-го, ведь в григорианском календаре они не високосные). Поэтому, просто складывая или вычитая числа, кратные 28, вы можете превратить любой год из промежутка с 1901-го по 2099-го в соответствующий ему из промежутка с 2000-го по 2027-й. Например, 1983-й имеет тот же код, что и 1983 + 28 = 2011, а 2061-й – тот же, что и 2061 – 56 = 2005.