关于约翰·康威末日算法的2100年末日日期计算错误排查请求
关于约翰·康威末日算法的2100年末日日期计算错误排查请求
我最近一直在研究约翰·康威的末日算法——就是那个能快速算出任意日期对应星期几的神奇方法。我知道这个算法有不少变体,但打算先吃透康威本人提出的版本(之后再去探索其他方法)。他在两段视频里详细讲解了这个算法:
- 视频1
- 视频2
目前我卡在了第二段视频里讲的「计算某一年的末日日期」步骤上。
先给大家看一个我算对的例子:计算1976年的末日日期。已知1900年的末日是星期三,从1900到1976年,一共是6个12年(也就是72年),剩下4年,其中有1个闰年。按照算法计算:6 + 4 + 1 = 11,11 mod 7 = 4,星期三往后加4天就是星期日,这个结果是对的。
但换成2100年的时候,我算出来的结果就和实际不符了。已知2000年的末日是星期二,我是这么算的:从2000到2100年,一共是8个12年(96年),剩下4年,其中有1个闰年。8 + 4 + 1 = 13,13 mod 7 = 6,星期二加6天得到星期一,但实际上2100年的末日是星期日。
有没有大佬能帮我找出哪里出错了?提前谢谢大家!
备注:内容来源于stack exchange,提问作者Rudolf Clausius




