Zellerjeva kongruenca

Iz testwiki
Pojdi na navigacijo Pojdi na iskanje

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

h=(q+(m+1)2610+K+K4+J42J)mod7,

za julijanski koledar je

h=(q+(m+1)2610+K+K4+5J)mod7,

kjer je

  • h dan v tednu (0 = sobota, 1 = nedelja, 2 = ponedeljek, ...)
  • q je dan v mesecu
  • m je mesec
  • J je stoletje (pravzaprav year/100)
  • K je leto v stoletju (yearmod100)
  • a 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
    yy - 1

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

  return nw

Glej tudi

Reference

Zunanje povezave