B.1 Gaußscher Algorithmus zur Bestimmung des Ostersonntags

// Time-stamp: "(23.04.02 21:10) gauss.cpp [Klaus@Wachtler.de]"
//
// +----------------------------------------------------------------------+
// |                                                                      |
// | i = jahr/100 - jahr/400 + 4;                                         |
// |                                                                      |
// +----------------------------------------------------------------------+
// |                                                                      |
// | j = i - jahr/300 + 11;                                               |
// |                                                                      |
// +----------------------------------------------------------------------+
// |                                                                      |
// | a = ( ( jahr%19 )*19 + j )%30;                                       |
// |                                                                      |
// +----------------------------------------------------------------------+
// |                                                                      |
// | b = ( ( ( jahr%4 )*2 + 4*jahr + 6*a + i )%7 ) + a - 9;               |
// |                                                                      |
// +----------------------------------------------------------------------+
// |                                                                      |
// |                b<1                                                   |
// |                 |                                                    |
// +----- j ---------|---------------- n ---------------------------------+
// |                 |                                                    |
// |                 |                (b==26)                             |
// |                 |                 ODER                               |
// |                 | (a==28 UND b==25 UND ( ( 11*( j + 1 ) )%30 )<19) ) |
// |                 |                |                                   |
// |                 +------- j ------+----------- n ---------------------+
// |                 |                |                                   |
// |   ot = 31 + b;  |  b = b - 7;    |                                   |
// |   om = 3;       |                |                                   |
// |                 +----------------+-----------------------------------+
// |                 |                                                    |
// |                 |             ot = b;                                |
// |                 |             om = 4;                                |
// |                 |                                                    |
// +----------------------------------------------------------------------+
//
// Ostersonntag = 1. Sonntag nach 1. Vollmond im Frühjahr

#include <stdio.h>

void gauss( int jahr )
{
  int i, j, a, b, ot, om;

  i = jahr/100 - jahr/400 + 4;
  j = i - jahr/300 + 11;
  a = ( ( jahr%19 )*19 + j )%30;
  b = ( ( ( jahr%4 )*2 + 4*jahr + 6*a + i )%7 ) + a - 9;

  if( b<1 )
  {
    ot = 31 + b;
    om = 3;
  }
  else
  {
    if( (b==26)
        ||
        (a==28 && b==25 && ( ( 11*( j + 1 ) )%30 )<19)
        )
    {
      b = b - 7;
    }
    ot = b;
    om = 4;
  }

  printf( "%02d.%02d.%04d\n", ot, om, jahr );
}


int main( int nargs, char **args )
{
  for( int i=1980; i<2006; i++ )
  {
    gauss( i );
  }
  return 0;
}

Anmerkung: weitere interessante Informationen zum Kalender, zugehörige Algorithmen und Literaturverweise finden sich in der c't 15/97, S. 312.

Weitere ganz interessante Informationen zu anderen Kalenderrechnungen erhält man über http://www.koenigsmuenster.de/rsk/einfuehrung.htm; beispielsweise kann man unter http://www.koenigsmuenster.de/rsk/dechija.htm studieren, wann das jüdische Jahr beginnt. Dagegen ist Ostern eine leichte Übung.



www.wachtler.de