StartAlgorytmyPrzetwarzanie datWyznaczanie daty wielkanocy - algortym Gaussa
Baza Wiedzy
Wersja offline serwisu przeznaczona na urządzenia z systemem Android.

Darowizny
darowiznaWspomóż rozwój serwisu


Nagłówki RSS
Kanał artykuły
Kanał implementacje
Kanał komentarze
Kanał forum


Bookmarki









Sonda
Implementacji w jakim języku programowania poszukujesz?
 
Wyznaczanie daty wielkanocy - algortym Gaussa
Ocena użytkowników:+++-- / 10
SłabyŚwietny 
Wpisany przez Tomasz Lubiński
wtorek, 19 lutego 2008 21:43
Wielkanoc jest tak zwanym świętem ruchomym - oznacza to, że każdego roku występuje w inny dzień. Definicja mówi, iż przypada ona w pierwszą niedzielę po pierwszej pełni Księżyca przypadającej po równonocy wiosennej. Jeden ze sposobów obliczenia tej daty został podany przez Gaussa. Algorytm przebiega następująco:

  • a = rok mod 19
  • b = rok mod 4
  • c = rok mod 7
  • d = (a*19 + A) mod 30
  • e = (2b + 4c + 6d + B) mod 7
  • wielkanoc = 22 marzec + d + e

Zatem suma zmiennych d oraz e oznacza ile dni po 22 marca przypada wielkanoc.

dla podanej metody mamy dwa wyjątki:
  • jeżeli d = 29 oraz e = 6 to Wielkanoc miałaby przypaść na dzień 26 kwietnia. Wtedy zawsze obchodzi się ją tydzień wcześniej, tzn. 19 kwietnia
  • jeżeli d = 28 oraz e = 6 to Wielkanoc miałaby przypaść 25 kwietnia. Wtedy zawsze obchodzi się ją tydzień wcześniej, tzn. 18 kwietnia

Do obliczeń potrzebne są dwie liczby A i B.
Ich wartości dla kalendarza gregoriańskiego (czyli tego obowiązującego w Polsce) odczytujemy z poniższej tabeli:

Zakres latAB
- 1582156
1583 - 1699222
1700 - 1799233
1800 - 1999234
1900 - 2099245
2100 - 2199246
2200 - 2299250
2300 - 2399261
2400 - 2499251

Przykład:
Obliczymy datę wielkanocy dla roku 2007.
a = 2007 mod 19 = 12
b = 2007 mod 4 = 3
c = 2007 mod 7 = 5
d = (12*19 + 24) mod 30 = 252 mod 30 = 12
e = (2*3 + 4*5 + 6*12 + 5) mod 7 = 103 mod 7 = 5
Sprawdzamy czy obliczenia pokrywają się z dwoma podanymi wyjątkami? Nie.
Zatem wielkanoc przypada 12 + 5 = 17 dni po 22 marca, czyli 22 + 17 = 39. Marzec ma zawsze 31 dni wynik jest większy od 31 zatem wielkanoc przypada w kwietniu, a dokładnie 39 - 31 = 8 kwietnia.

Obliczymy datę wielkanocy dla roku 2008.
a = 2008 mod 19 = 13
b = 2008 mod 4 = 0
c = 2008 mod 7 = 6
d = (13*19 + 24) mod 30 = 252 mod 30 = 1
e = (2*0 + 4*6 + 6*1 + 5) mod 7 = 35 mod 7 = 0
Sprawdzamy czy obliczenia pokrywają się z dwoma podanymi wyjątkami? Nie.
Zatem wielkanoc przypada 1 + 0 = 1 dni po 22 marca, czyli 22 + 1 = 23 marca.



Autor Język programowania Komentarz Otwórz Pobierz Ocena
Tomasz Lubiński C# MS Visual Studio .net
Implementacja w C#
Implementacja w C#
+++-- / 5
Tomasz Lubiński C/C++
Implementacja w C/C++
Implementacja w C/C++
++++- / 3
Tomasz Lubiński Delphi/Pascal
Implementacja w Delphi/Pascal
Implementacja w Delphi/Pascal
++++- / 2
Tomasz Lubiński Java
Implementacja w Java
Implementacja w Java
++++- / 3
 
Dodaj własną implementację tego algorytmu
  • Zaloguj się na stronie
Plik:
Język programowania:
Komentarz:
  By móc dodać implementacje zaloguj się na stronie



Poprawiony: piątek, 10 czerwca 2011 20:44

Dodaj komentarz

Kod antysapmowy
Odśwież