Пасха

Пасха
Равноденствие весною,
Вскоре полная луна
На весеннем небосклоне,
Дальше Пасха быть должна
Во Христово Воскресение.
Если сложно наблюдать
Вам небесные явления,
Или загодя охота
Дату нам святую знать —
Для любого года,
Как число то сосчитать?
Немецкий математик
Гаусс Карл Фридрих
Такову решил задачу,
Одарил нас алгоритмом.
 
Вот только не понятна мне,
Католики и православные,
Причина расхождения
В расчетах Воскресения.
 
Пока же в приложении
Для всех, знакомых с Бейсиком
Тот алгоритм я приведу
Для православной версии.
 
 (110317)
 
    * * *
    Приложение
  Ниже приводится листинг функции, определяемой юзером, написанная на языке Visual Basic for Applications.
  Указания. В программе MS Excel надо войти в Редактор Visual Basic и вставить Модуль (в окне появится лист). На лист модуля скопировать листинг. Затем вернуться на Рабочий лист. В любую ячейку ввести интересующий нас год (ХХ или ХХI столетия). В соседнюю ячейку ввести формулу с помощью мастера функций. В диалоге выбрать категорию «Определенные пользователем», найти и выбрать функцию ПАСХА. Для задания аргумента щелкнуть по ячейке с годом.
  Тому, кто доживёт до следующих столетий, придётся заменить в листинге число 13 на 14.
  При затруднениях можно обратиться за помощью к школьному учителю информатики.
 
Function ПАСХА(Год As Integer) As String
' Расчет даты пасхи по правослваной традиции
' в переложении на григорианский календарь.
' В XX-м, XXI-м столетиях расхождение дат
' Григорианского и Юлианского стилей
' составляет 13 дней.
' Алгоритм Гаусса
Dim a%, b%, c%, d%, e%, p%, q$
a = Год Mod 19
b = Год Mod 4
c = Год Mod 7
d = (19 * a + 15) Mod 30
e = (2 * b + 4 * c + 6 * d + 6) Mod 7
p = d + e - 9 + 13
' В следующем столетии придётся
' заменить здесь число 13 на 14
If p > 30 Then
p = p - 30: q = "мая"
Else
q = "апреля"
End If
ПАСХА = Trim(Str(p)) + " " + q
End Function