心算某一天是星期幾——康威裁決日算法
英國數(shù)學家約翰·霍頓·康威在1972年,發(fā)明了一個十分簡易的,可以心算某一天是星期幾的算法。本人嘗試了一下,確實非常簡易,因此介紹給大家。
基本原理:當我們知道某一個月某天是星期幾時,再推算當月其他某天是星期幾會非常容易。比如,如果已知:2021年5月21日是星期五,則:可知21±7天的日子都是星期五,比如5月28日,5月14日。要計算其他日子,則只要“就近”推算即可。
比如:要計算5月31日是星期幾。因為5月28日是星期5,則31號是28號后面3天,則31號是星期“5+3”=星期“8”=星期1。
再比如要計算5月1日是星期幾。因為知道5月21日是星期5,21-7-7-7=0。所以5月"0"日是星期5,則5月1日是星期6。
知道以上基本原理后,我們知道:只要能夠?qū)δ衬?-12月中,都能找到一天確切知道它是星期幾,則可以快速推算出當年任何一天是星期幾。因此需要找出這樣12個日期。
又因為,一年中,2月最特殊,且其長度可變,因此康威把2月的最后一天作為2月的特殊日子,稱其為“Doomsday”。Doomsday原意是“末日”,我翻譯它為“裁決日”,因為基督教的教義中,Doomsday會發(fā)生“末日裁決”,且這一天確實也起到了裁決作用。
接下來,我們希望在其他每個月也找一個“裁決日”,我們希望它總是與2月的最后一天的星期數(shù)相同,且容易記憶??低臀覀冋页隽诉@樣一些日期:
對偶數(shù)月:4月4日,6月6日,8月8日,10月10日,12月12日。這一組十分容易記憶。
奇數(shù)月:1月的最后一天(1月31日,閏年為“1月32日”),3月7日,5月9日,9月5日,7月11日,11月7日。對這一組日期,我用這個口訣記憶:
“每年1月2月的最后一天和女神節(jié)的前一天,我會朝9晚5的在7-11便利店打工”。(請自行體會這句口訣與上述日期的關(guān)系)
以上這組日期被稱為“裁決日”,它們的特點是:它們的星期數(shù)總是相同的,無論是哪一年!(請查看手機日歷確認。)對2021年,裁決日是星期日(可以記憶為星期7或星期0)。
那么,推算2021年某天是星期幾就很容易了,比如推算教師節(jié)9月10日是星期幾:
根據(jù)口訣中的”朝九晚五“,可知9月5日是裁決日,則為星期日。9月10日是5日后面的5天,所以是“星期日+5”=星期5。
以上完成了對今年所有日子的,心算星期數(shù)的方法介紹。要計算其他上世紀和本世紀的其他年份,需要些額外的計算?;舅悸放c之前的思路類似,先背出某個基礎年份的裁決日星期數(shù),再計算目標年份與基礎年份的“偏移量”,由此得此目標年份的裁決日的星期數(shù)?;A年份取每個世紀的第一年,因此先把1900年和2000年的裁決日的星期數(shù)背出來:
1900年的裁決日是星期3。2000年的裁決日是星期2。
然后要計算目標年份的“偏移量”。介紹兩個算法,康威的原版算法,:
取年份后兩位(比如2021年,取“21”)
除以12,求商和余數(shù)(21?12=1余9)
余數(shù)除以4求商(余數(shù)忽略,9?4商是2)
以上三個相加,即“偏移量”(1+9+2=12)
偏移量+基準年,模7,即為結(jié)果(12+星期2=“星期14”,所以2021年裁決日是星期日)
2010年,有人提出一個改進的“奇+11算法”,心算更為便利。該算法如下:
取年份后兩位。(比如2021年,取“21”)
判斷該數(shù)字是否為奇數(shù),若是奇數(shù)則加11,偶數(shù)則不操作。(21+11=32)
將數(shù)字除以2. (32/2=16)
判斷該數(shù)字是否為奇數(shù),若是奇數(shù)則加11,偶數(shù)則不操作。(16不變)
將數(shù)字除以7,求余數(shù)(16/7余2)
用7減去這個數(shù)字,即為偏移量。(7-2=5。星期2+7=星期日,所以2021年裁決日是星期日)
最后舉兩個例子:
例1:北京奧運會開幕是在2008年8月8日,這一天是星期幾?
用康威算法:8/12=0余8,8除以4,商2。0+8+2=10,為偏移量。2000年裁決日是周二,所以2008年裁決日是:星期2+10=星期12=星期5。8月8日恰為裁決日,所以2008年8月8日是星期5。
例2:2020年1月1日星期幾?
用“奇+11算法”:20是偶數(shù),20/2=10,10/7余3。7-3=4,即為偏移量。所以2020年裁決日是:星期2+4=星期6。
注意到2020年是閏年,所以1月裁決日為1月32日,可得:1月(32-28)日=1月4日,是星期6。1月1日是1月4日前面3天,所以1月1日是:星期6-3=星期3。
福利:

喜馬拉雅FM:https://www.ximalaya.com/keji/6310606/
微信關(guān)注:dalaoli_shuxue
B站: https://space.bilibili.com/423722633
知乎:https://zhuanlan.zhihu.com/dalaoli-shuxue/
電郵?:dalaoliliaoshuxue@gmail.com