Zellerjeva kongruenca

Iz Wikipedije, proste enciklopedije
Skoči na: navigacija, 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[uredi | uredi kodo]

Formula za gregorijanski koledar je

h = \left(q + \left\lfloor\frac{(m+1)26}{10}\right\rfloor + K + \left\lfloor\frac{K}{4}\right\rfloor + \left\lfloor\frac{J}{4}\right\rfloor - 2J\right) \mod 7,

za julijanski koledar je

h = \left(q + \left\lfloor\frac{(m+1) 26}{10}\right\rfloor + K + \left\lfloor\frac{K}{4}\right\rfloor + 5 - J\right) \mod 7,

kjer je

  • h dan v tednu (0 = sobota, 1 = nedelja, 2 = ponedeljek, ...)
  • q je dan v mesecu
  • m je mesec
  • J je stoletje (pravzaprav \lfloor year/100 \rfloor)
  • K je leto v stoletju (year \mod 100)
  • \lfloor a \rfloor 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[uredi | uredi kodo]

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 + y/4 - y/100 + y/400 + tm-1 + d) mod 7

  return nw

Glej tudi[uredi | uredi kodo]

Reference[uredi | uredi kodo]

Zunanje povezave[uredi | uredi kodo]