Gaußsche Osterformel

OP #2791413
Lesenswert?

Hallo zusammen,

hier nur kurz eine kleine Implementation der Gaußschen Osterformel. Zur 
Feiertagsberechnung recht hilfreich :)
1
// Function that calculates the date of easter sunday as days after februar
2
// E.g. 32 would be 1. of april (Returns value: min. 22, max. 56)
3
int GetEasterSundayDateAsDaysAfterFebruary( int YEAR )
4
{
5
  int  k = YEAR / 100;    // K(X) = X div 100
6
  int s = 2 - (3*k + 3) / 4;  // S(K) = 2 - (3K + 3) div 4
7
  int m = 15 + (3*k + 3) / 4 - (8*k + 13) / 25;  // M(K) = 15 + (3K + 3) div 4 - (K + 13) div 25
8
  int a = YEAR % 19;  // A(X) = X mod 19
9
  int d = ( 19*a + m ) % 30;  // D(A,M) = (19A + M) mod 30
10
  //int r = (int) d / 29 + (int) d / 28 - (int) d / 29 - (int) a / 11;  // R(D,A) = D div 29 + (D div 28 - D div 29) (A div 11)
11
  int r = ( d + a / 11 ) / 29;  // Shorter Roegel version: R(D,A) = (D + A div 11) div 29
12
  int og = 21 + d - r;  // OG(D,R) = 21 + D - R
13
  int sz = 7 - ( YEAR + YEAR / 4 + s ) % 7;  // SZ(X,S) = 7 - (X + X div 4 + S) mod 7
14
  int oe = 7 - ( og - sz ) % 7;  // OE(OG,SZ) = 7 - (OG - SZ) mod 7
15

16
  return og + oe;
17
}
OP #2791667
Lesenswert?

Für die kein Interesse haben ihre Feiertagsberechnung über eine Kalender 
Lookup-Table für die nächsten Jahrzehnte durchzuführen, ist das 
definitiv hilfreich.

Anwendungsbeispiel: Meine Version der Word Clock schaltet sich an 
Wochentagen aus. An Feiertagen tat sie es bisher auch. Dank der 
Osterformel und ein bisschen Zusatzcode nun nicht mehr :)
Gast #2792890
Lesenswert?

mahwe schrieb:
> man nehme den ersten Sonntag im Frühjahr nach dem ersten Vollmond;-).
                               ^^^^^^^^^^^

Wann ist für Frühjahr?

Laut Wiki:
Auf Grund neutestamentlicher Überlieferung wurde der Ostertermin 
festgelegt als der erste Sonntag nach dem ersten Frühlingsvollmond. 
Vereinbartes Datum für den frühesten Frühlingsvollmond ist der 21. März, 
so dass der früheste Ostersonntag auf den 22. März fällt. Spätestes 
Osterdatum ist der 25. April.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren