P K I- S I- K List za mlade matematike, fizike, astronome in računalnikarje ISSN 0351-6652 Letnik 23 (1995/1996) Številka 6 Strani 334-347 Martin Juvan: O KOLEDARJU, PETKIH IN ŠTEVILU 13 Ključne besede: računalništvo, koledarji, Zellerjev obrazec, petek trinajsti. Elektronska verzija: http://www.presek.si/23/1278-Juvan.pdf © 1996 Društvo matematikov, fizikov in astronomov Slovenije © 2010 DMFA - založništvo O KOLEDARJU, PETKIH IN ŠTEVILU 13 Petek, trinajstega. Saj veste, dan, ki ga je najbolje preležati v postelji. Pa še tam ne moremo biti povsem prepričani, da nas ne bo doletela nesreča. Se vam ne zdi, da je trinajsti v mesecu kar preveč pogosto petek? Da? Tudi mene že dolgo preganja ta občutek. Zato sem se odločil, da bom zadevo znanstveno raziskal. Začnimo z opisom koledarja, ki velja v naših krajih. Gre za gregori-janski koledar, ki gaje leta 1582 v katoliških deželah vpeljal papež Gregor Xm. Danes ga uporabljajo v večini držav sveta. Po tem koledarju se leta delijo na običajna in prestopna. Vsako leto ima dvanajst mesecev. Meseci imajo po 30 ali 31 dni, izjema je le februar, ki ima v običajnih letih 28, v prestopnih pa 29 dni. Praviloma je leto, ki je deljivo s 4, prestopno. Izjema so le leta, ki so deljiva s 100, a ne s 400. Ta niso prestopna. Tako leta 1700, 1800 in 1900 niso bila prestopna, leto 2000 pa bo prestopno. Običajna leta imajo 365, prestopna pa 366 dni. Vsi vemo, da je vsak sedmi dan petek. Med 400 zaporednimi leti je 97 prestopnih. Zato imaštiristoletno obdobje 400-365 + 97 = 146097 dni. To Število pa je deljivo s 7, zato se naš koledar skupaj z dnevi, ob katerih nastopijo posamezni datumi, ponavlja s periodo 400 let. Našo analizo lahko torej omejimo na obdobje 400 let. Prešteli bomo, kolikokrat v tem obdobju pride trinajsti v mesecu na posamezni dan v tednu. Seveda lahko to štetje opravimo s svinčnikom in papirjem, ampak z uporabo računalnika bo preprosteje, hitreje in bolj zanesljivo. Poznati moramo le Zellerjev obrazec, ki nam pove, na kateri dan v tednu pride izbrani datum. Nato za vseh 12 • 400 — 4800 trinajstih dni v mesecih izračunamo, na kateri dan v tednu nastopijo, seštejemo rezultate in že imamo odgovor. Opišimo najprej, kako uporabljamo Zellerjev obrazec. Recimo, da nas zanima, kateri dan v tednu je izbrani datum dd.mm.ll, na primer 1. 3. 1996, pri čemer je dd dan, mm mesec in 11 leto. Postavimo d = dd ter m = mm — 2, če je mm > 2, in m = mm -f 10 sicer. V zadnjem primeru tudi zmanjšamo 11 za 1. Naj bo še l = 11 mod 100 število, ki ga pomenita zadnji števki leta, in $ = 11 div 100 število, ki ga dasta prvi dve Števki leta, torej za 1 zmanjšano stoletje, v katerem leži izbrano leto. Nato izračunamo ter ugotovimo, za kateri dan v tednu gre. Pri tem dan = 0 pomeni nedeljo, dan = 1 ponedeljek, ... in nazadnje dan — 6 soboto. Za naš poskusni datum 1. 3. 1996 imamo df = 1, m = 1, J = 96 in s = 19. Vstavimo v obrazec: obr = 1 + (13 ■ 1 - 1) div 5 + (5 ■ 96) div 4 + (21 • 19) div 4 = 1 + 2 + 120 + 99 = 222 in zatem še dan — 5 , Prvega marca naj bi bil torej petek. Pogled na koledar in res, bil je petek! Naslednji odstavek je nekoliko bolj zapleten in je namenjen tistim, ki jih moje zagotovilo o pravilnosti Zellerjevega obrazca ni povsem prepričalo. Ostali ga lahko brez škode preskočite. Znanstveni pristop zahteva, da vse uporabljene prijeme natančno utemeljimo. Zato si oglejmo nekaj razlogov, zakaj Zellcrjev obrazec vrne pravi dan v tednu. Takoj opazimo, daje pomemben le ostanek izraza obr pri deljenju s 7. Preverili smo že, da obrazec velja za 1. 3. 1996. Induktivno lahko pokažemo, da velja tudi za 1. marec poljubnega leta. Člen (5 ■ l) div 4 iz obrazca zapišimo kot l + l div 4. Običajno leto ima 365 dni, to Število pa ima ostanek 1 pri deljenju s 7. Za ustrezno povečanje števila obr za ena poskrbi člen l. Pri prestopnih letih dodatno enico prinese l div 4. Bolj zapleteno je, ko prestopimo v novo stoletje. Spet lahko zapišemo (21 * s) div 4 = 5 ■ s + s div 4. Ce je l = 99, potem je (5 * • i) div 4 = 123. Število 123 ima pri deljenju s 7 ostanek 4. Leto kasneje je l = 0, zato je (5 ■ l) div 4^0. Vendar pa se pri spremembi leta za ena poveča tudi s, to pa poveča obr za 5. Celotna sprememba je torej v običajnih letih ravno prava: —4 + 5=1. Ce pa je ustrezno leto tudi prestopno, dobimo Še dodatno enico iz s div 4. Podobno preverimo, da obrazec velja za prvi dan poljubnega meseca. Ker imajo meseci po 30 ali 31 dni, moramo pri prehodu v nov mesec obr povečati za 2 oziroma 3. To storimo s členom (13 ■ m — 1) div 5. izjema je le februar, ki ima le 28 oziroma 29 dni. Zanj poskrbimo tako, da se pri računanju pretvarjamo, da je februar zadnji mesec v letu (m = mm — 2 oziroma m = mm + 10 in sprememba 11). Tako koncu februarja sledi sprememba leta. Za spremembo obr pri spreminjanju dni v posameznem mesecu skrbimo s členom d. Zapišimo še program, s katerim preštejemo, ob katerih dnevih tedna nastopajo trinajsti dnevi v posameznih mesecih. program Petek J-3; { Prešteje, ob katerih dnevih v (ednu nastopijo 13. v mesecu. } var dan, mesec, let o: integer; { pomožne spremenljivke za hranjenje datumov } število; array[0..6] of integer; { stevilo[5j je število petkov trinajstega } function Zellcr(dd,mm,ll: integer): Integer; { Vrne, kateri dan v tednu je datum dd.mm.il. } { Pri tem je 0 nedelja, 1 ponedeljek, ..., 6 pa sobota. } var m,l,s,obr: integer; begi n if mm>2 then m := mm—2 else begin m := mm+10; II ;= 11—I; end; I := 11 mod 100; s i= II div 100; obr := dd+(13*m-l) div 5+(5*l) div 4+(21»s) div 4; Zeller ;= obr mod 7; end; { Zeller } begin for dan:=0 to 6 do stevilo[dan] := 0; for leto:=1600 to 1999 do for mesec: = l to 12 do begin dan Zel ler( 13,mesec,leto); stevilo[dan] ;= stevilo[dan]+l; end; { izpis rezultatov, } { iniciaJinacjja števcev } write In wri teln writeln writeln writeln writeln writeln writeln end. Porazdelitev trinajstih dni v mesecu po dnevih tedna:'); ponedel j ek1,stevilo[j torek ',stevilo[2 sreda \stevilo[3 četrtek \stevilo[4 petek \stevilof5 sobota T,steviIojfi nedelja \stevilofO :10); :10)[ dO); ¡10); ¡ID); :10); Program izpiše naslednjo razpredelnico: Porazdelitev trinajstih dni v mesecu po dnevih tedna: ponedeljek 685 torek 685 sreda 687 četrtek 684 petek 688 sobota 684 nedelja 687 Občutek nas torej ni varal. Trinajsti v mesecu je res najpogosteje v petek. Res pa je tudi, da razlika do števila nastopov v ostalih dnevih tedna ni prav velika. Z majhnimi spremembami gornjega programa lahko izračunamo še kopico zanimivih stvari« Tako sta v letu 1996 dva petka trinajstega: 13, september in 13. december. V letu 1997 bo en, v letu 1998 trije, v letu 1999 pa zopet le en tak petek. Preverimo tudi lahko, daje vsako leto vsaj en petek trinajstega, v nobenem letu pa niso več kot trije. Natančneje, med 400 zaporednimi leti je 171 let z enim, 170 let z dvema in 59 (nevarnih) let s po tremi petki trinajstega, Martin Juvan