7/11/07

日曆計算術

昨日看過日曆計算2007後﹐便想講講其中道理。起初﹐我確實也覺得有點不可思議﹐但係稔稔下就發覺不外如是。第一次留意到日期的變化﹐已是小學的時候﹐因為年年生日都差不多在考中期試﹐不跌落五﹑六﹑日就實無得玩﹐看了幾年﹐發覺每過一年﹐星期幾便順序推後一日﹐但是後來過多兩年又發覺有不靈的時候﹐嘻﹐還是失望居多。

今天看起來﹐便覺得簡單﹐就是潤年第二十九日作怪﹐其實只要有小學數學程度﹐就足以明白當中玄妙。一年365日﹐而能夠整除7的就只得364﹐那一天便是把星期幾推後一日的原因。亦因四年一潤﹐所以28年就成一個圓滿的週期。例如00年的年碼是0﹐01﹑02﹑03年的年碼也會是1﹑2﹑3 respectively﹐但到了04年﹐由於潤年加了一日﹐因此年碼就是5﹐而不是4﹐一﹑二月卻仍是要用4去計。(也可說﹐年碼在潤年的一﹑二月要減一。) 順延而知﹐04-07的年碼是: 5﹑6﹑0﹑1. 08年不是2﹐而是3﹐08-11的年碼就是3﹑4﹑5﹑6. 如此類推。為了方便計算﹐如過把潤年的年碼記下﹐如00﹑04﹑08﹑12﹑16﹑20﹑24年﹐它的排列必定是:0531642(不用硬記﹐0-6﹐減2減2逆向走)﹐因此2028年的年碼﹐就必定是0﹐2032就是5...如此類推。

年份沒有問題﹐便到月﹐月份日子除七的餘數﹐便是: 6, 2, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4 這系數的來源﹐如何來呢? 月份的日子是: 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31. 每個月日子除七的餘數是: 3, 0, 3, 2, 3, 2, 3, 3, 2, 3, 2, 3. 現在想0-6﹐且先不問為何一月是6﹐但6+3日(餘數)﹐便是: 6﹐0﹐1﹐(2)﹐由於二月能整除因此三月的第一日也會和二月第一日落在同一個星期天。三月後﹐2+3日= 2﹐3﹐4﹐(5)﹐ 四月後: 5+2日= 5﹐6﹐(0)﹐五月+3: 0﹐1﹐2﹐(3)...如此類推。

至於日﹐也不用解釋了罷! 以今年為例﹐1月1是星期一﹐年碼+月碼+日碼=(1+6+1)/7=1. 月份第一個數字是6﹐就是要來adjust加完年數後能整除﹐其實如過不是6,也可set過一系列的月數﹐又重新set過年數﹐還能得到同樣效果。第一天由於剛是星期一﹐既可循公式計今天是星期幾:(1+5+11)/7=3﹐甚至既知一月一是星期一﹐月碼已知6=1﹐那麼七月的月碼既是5﹐七月一便會是早一天 = 星期日(0) + 日子餘數11/7=1...(3). 也會有相同答案。

潤年怎計呢? 4除得盡的﹐但又不是100隨得盡的﹐便是潤年。能給400除得盡又是例外﹐因此1900不是﹐但2000是﹔2100不是﹐但2400是。

嘻﹐明白歸明白﹐我卻懶得記這堆數字﹐要扮天才不如看多本書。

1 comment:

Anonymous said...

謝謝你的解釋。我本來還以為有一複雜公式,原來沒有。但閏年的一、二月密碼要減一,因為年碼要在三月才生效,故頭兩個月碼便要減去一日。另外,「且先不問為何一月是6」,我想6是由2000年1月1日的星期數來決定的,那天該是星期六:

6-0(year)-1(day)=5(month code)

但2000是閏年,故平年的月碼要加一,即6。