Um nicht jedesmal astronomische Tafeln benutzen zu müssen, hat Carl Friedrich Gauß im Jahre 1800 seine Osterformel entwickelt.
Alle Formeln arbeiten ausschließlich mit Ganzzahlen. Beim Programmieren werden folglich Integer-Zahlen benutzt. Es werden die Operatoren DIV und MOD verwendet. DIV ist die Ganzzahlen-Division. Beispiel: 5 div 3 = 1. MOD ist der Divisions-Rest (MODULA-Operation). Beispiele: 5 mod 3 = 2; 5 mod 100 = 5; 4 mod 2 = 0.
Aus der Eingabe der Jahreszahl, z.B. 1998, errechnet die Formel den Tag im März, auf den der Ostersonntag fällt. Ist das Ergebnis größer als 31, dann is Ostern im April. Beispiel: Ergebnis 33 bedeutet, dass Ostern am 2. April ist. Die Formel gilt für die Jahre 1583 bis 8702.
function OSTERN_GAUSS(jahr : integer) : integer;
{ Ostern faellt auf den n. Maerz. Beisp.: OSTERN=33 bedeutet 2.April }
{ Quelle: MONOID Mathematik-Blatt Karolinen-Gymn. Frankenthal Maerz 1992 }
{ Nach der Gauss-Formel aus dem Jahre 1800. Gueltig fuer 1583 bis 8702 }
var a,b,c,d,e,f,g,h,i,j : integer;
begin
a := jahr mod 19;
b := jahr mod 4;
c := jahr mod 7;
d := ( ( (jahr div 100) * 8 ) + 13 ) div 25 - 2;
e := (jahr div 100) - (jahr div 400) - 2;
f := (15 + e - d) mod 30;
g := (6 + e) mod 7;
h := (19 * a + f) mod 30;
i := h;
if (h = 29) then i := 28;
if ( (h = 28) and (a > 10) ) then i := 27;
j := ( (2 * b) + (4 * c) + (6 * i) + g ) mod 7;
OSTERN_GAUSS := i + j + 22;
end;
Beispiel 1998:
function OSTERN_CARTER_1(jahr : integer) : integer;
{ Ostern faellt auf den n. Maerz. Beisp.: OSTERN=33 bedeutet 2.April }
{ Quelle: http://cssa.stanford.edu/~marcos/carter.html }
{ Nach Carter. Gueltig fuer 1900 bis 2099 }
var a,b,c : integer;
begin
a := 225 - 11 * (jahr mod 19);
b := (a - 21) mod 30 + 21;
if b > 48 then b := b - 1;
c := (jahr + (jahr div 4) + b + 1) mod 7;
OSTERN_CARTER_1 := b + 7 - c;
end;
Wenn man diese Formel um die Gregorianische Schaltjahresrechnung
erweitert, erhöht sich die Gültigkeit auf 1894 bis 2203:
function OSTERN_CARTER_2(jahr : integer) : integer;
{ Ostern faellt auf den n. Maerz. Beisp.: OSTERN=33 bedeutet 2.April }
{ Quelle: http://cssa.stanford.edu/~marcos/carter.html, modifiziert nach }
{ der Gregorianischen Schaltjahresrechnung. Gueltig fuer 1894 bis 2203 }
var a,b,c : integer;
begin
a := (204 - 11 * (jahr mod 19) ) mod 30 + 21;
b := a - (a div 49);
c := jahr + (jahr div 4) - (jahr div 100) + (jahr div 400) + b + 37;
OSTERN_CARTER_2 := b - (c mod 7) + 7;
end;
function OSTERN_TP_FAQ(jahr : integer) : integer;
{Ostern faellt auf den n. Maerz. Beisp.: Easter=33 bedeutet 2.April }
{Quelle: Turbo Pascal FAQ der TU Clausthal }
{home.tu-clausthal.de/~inas/computer/FAQ/pasfaq.html }
{Dieser Algorithmus basiert nicht auf der Berechnung von Gauss und kommt }
{ohne Ausnahmen aus (lt. Paul Schlyter). }
{Entspricht Butchers Algorithm fuer alle Jahre ab incl. 1583 }
var a,b,c,d,e,f,g,h,i,k,l,m : integer;
begin
a := jahr mod 19;
b := jahr div 100;
c := jahr mod 100;
d := b div 4;
e := b mod 4;
f := (b + 8) div 25;
g := (b - f + 1) div 3;
h := (19 * a + b - d - g + 15) mod 30;
i := c div 4;
k := c mod 4;
l := (32 + 2 * e + 2 * i - h - k) mod 7;
m := (a + 11 * h + 22 * l) div 451;
OSTERN_TP_FAQ := h + l - 7 * m + 22;
end;
Zurück zu JBs HomePage