Zellerjeva kongruenca je algoritem, ki ga je razvil Christian Zeller, z njim pa lahko izračunamo dan v tednu za kateri koli datum.

Formula

Formula za gregorijanski koledar je

za julijanski koledar je

kjer je h dan v tednu (0 = sobota, 1 = nedelja, 2 = ponedeljek, ...) q je dan v mesecu m je mesec J je stoletje (pravzaprav ) K je leto v stoletju () celi del števila

Januar in februar se štejeta kot 13. in 14. mesec prejšnjega leta.

V računalništvu je rezultat modula za negativna število negativen, zato je najhitrejša pot do rezultata v razponu 0 - 6 zamenjava - 2 J z + 5 J in - J z + 6 J.

Algoritem Ta algoritem velja samo za datume gregorijanskega koledarja.

Algoritem Z(y, m, d) Vhod: Leto y, mesec m (1 ≤ m ≤ 12) in dan d (1 ≤ d ≤ 31). Izhod: Dan v tednu.

t ← (0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4) n ← (nedelja, ponedeljek, torek, sreda, četrtek, petek, sobota)

if m < 3 y ← y - 1

w ← (y + y/4 - y/100 + y/400 + tm-1 + d) mod 7

return nw

Glej tudi

petek trinajstega nedeljska črka

Reference

Zunanje povezave

The Calendrical Works of Rektor Chr. Zeller: The Day-of-Week and Easter Formulae by J R Stockton, Surrey, UK Paul E. Black, Zellerjeva kongruenca na NIST Dictionary of Algorithms and Data Structures. Kako si zapomniti Zellerjevo kongruenco

Kategorija:Algoritmi Kategorija:Koledarji