Работающие формулы для рассчёта даты празднования Пасхи.

Работающие формулы для рассчёта даты празднования Пасхи.

СообщениеАвтор: Алексей » Вт мар 21, 2006 11:56 pm

В общем-то, в интернете эти формулы можно найти - но они разбросаны по разным ресурсам, и не везде доведены до конкретного алгоритма - чаще всё сводится к текстовым объяснениям. Иногда возникает потребность увидеть формулы в "голой математике", без лишних комментариев.

Ниже код двух работающих java-процедур (они же могут быть в неизменном виде использованы в программах на C/C++)

Код: Выделить все
    private String get_west_easter(int m_year) {
       
        int c = m_year / 100;
   int A = m_year % 19 ;
   int K = (c - 17)/25;
   int D = (c - c/4 - (c - K)/3 + 19*A + 15) % 30;
   D = D - (D/28)*(1 - (D/28)*(29/(D + 1))*((21 - A)/11));
   int E = (m_year + m_year/4 + D + 2 - c + c/4) % 7;
       
   int L = D - E;
   int m = 3 + (L + 40)/44;
   int d = L + 28 - 31*(m/4);
       
        return showdate(d, m, m_year);
       
    }


Код: Выделить все
        private String get_east_easter(int m_year) {
       
   int A = m_year % 19 ;
        int B = m_year % 4;
        int C = m_year % 7;
        int D = (19 * A + 15) % 30;
        int E = (2 * B + 4 * C + 6 * D + 6) % 7;
       
        int L = D + E;
        int mm = (L + 40) / 50;
   int m = 3 + mm;
   int d = L + 35 - 31*(m/4);
       
        m = m + (d / (31 - mm));
        d = d - (31 - mm) * (d / (31 - mm) );
       
        return showdate(d, m, m_year);
       
    }


С восточной Пасхой небольшая заморочка в том, что её ещё нужно переводить из юлианского календаря в современный - поэтому формулы модифицированы, чтобы сразу получать нужный результат.

При ручном рассчёте (с помощью калькулятора) обратите внимание на операции: "%" означает взятие остатка от деления; само деление везде целочисленное - т.е. дробная часть попросту отбрасывается.
Алексей
 
Сообщения: 220
Регистрация: Вс июн 29, 2003 7:22 pm
Откуда: Новосибирск

Вернуться в Календарь

Кто сейчас на конференции

Сейчас этот форум просматривают: в настоящее время на конференции нет зарегистрированных пользователей и гости: 1

cron