Выбрать главу

3. Какой день является високосным?

Это 24 февраля!

Странно? Да! Объяснение связано с римским календарем, вы найдете его в разделе 7.1.

Если рассматривать числа, то конечно, дополнительный день — это 29 февраля. Однако если рассматривать праздничные дни, то традиционно используется следующее соотношение между днями високосных и не високосных годов:

Обычный год Високосный год
22 февраля 22 февраля
23 февраля 23 февраля
  24 февраля (дополнительный день)
24 февраля 25 февраля
25 февраля 26 февраля
26 февраля 27 февраля
27 февраля 28 февраля
28 февраля 29 февраля

Например, день святого Леандра отмечается 27 февраля в обычные годы и 28 февраля в високосные годы.

Во многих странах високосный день постепенно переносится с 24 на 29 число. Это влияет на такие страны, как Швеция и Австрия, в которых отмечаются «именные дни» (т.е. каждый день связан с именем).

4. Что такое солнечный цикл?

В юлианском календаре соотношение между днями недели и датами повторяется с циклом в 28 лет. В григорианском календаре это верно для периодов, в которые не входят годы с номерами, кратными 100 но не кратными 400.

Период в 28 лет называется солнечным циклом. Солнечное число (SN) года с номером Year можно найти так:

SN = (Year + 8) mod 28 + 1

В юлианском календаре существует однозначное соответствие между солнечным числом и днем недели, на который приходится определенная дата.

(Цикл високосных лет в григорианском календаре — 400 лет, что составляет 146097 дней, это число, как ни удивительно, кратно 7. Поэтому в григорианском календаре эквивалент «солнечного цикла» — это 400 лет, а не 7 x 400 = 2800 =лет, как можно подумать.)

5. Каким днем недели было 2 августа 1953 г.?

Чтобы вычислить, на какой день недели приходится некоторая дата, можно использовать следующий алгоритм (все деления целочисленные, остаток не учитывается; номер года — Year, месяца — Month, дня — Day):

a = 14 – Month/12
y = Year – a
m = Month + 12a – 2
Для юлианского календаря: d = (5 + Day + y + y/4 + 31m/12) mod 7
Для григорианского календаря: d = (Day + y + y/4 y/100 + y/400 + 31m/12) mod 7

Значения d — 0 для воскресенья, 1 для понедельника, и т.д.

Упражнение : в какой день недели родился автор?

Мой день рождения — 2 августа 1953 г. (разумеется, по григорианскому календарю).

a = 14–8/12 = 0

y = 1953 – 0 = 1953

m = 8 + 12x0 – 2 = 6

d = (2+1953+1953/41953/100+1953/400+31x6/12) mod 7 = (2+1953+488–19+4+15) mod 7 = 2443 mod 7 = 0

Я родился в воскресенье.

6. Когда я смогу снова использовать мой календарь на 1992 год?

Давайте предположим, что нас интересует только, какие даты приходятся на определенные дни недели; нас не интересуют даты Пасхи и других перемещающихся праздников.

Также ограничимся интервалом 1901–2099 гг.

С этими ограничениями ответ таков:

• Если год Х является високосным, календарь можно вновь использовать в году Х+28.