如何快速计算出任意一天是星期几?有哪些技巧?

丙戌探索


答:在初等数论中,有很多根据年月日计算星期的公式,我来介绍一个。


相关知识

在介绍公式前,我们先来了解一些数学和公历相关的知识:

(1)闰年规则:四年一闰,百年不闰,四百年再闰,闰年是366天,平年是365天;

(2)闰月规则:闰年时,多的一天都加到二月中,平年二月28天,闰年二月29天;

(3)格里高利历:我们现在使用的公历,传至西方,叫做格里高利历;

在1582年10月4日(包括4日)前,罗马使用儒略历,罗马教皇格里高利十三世改革历法,针对哥白尼的日心说修正了旧历法,规则:1582年10月4日接下来的一天为10月15日,相当于历法中少了10天,但是星期继续接着前一天的;



(3)取整符号:[a]表示对实数a取整,也就是抛弃小数部分,只留下整数部分,比如"[3.7865]=3";

(4)同余式:若m是一个正整数,a、b为整数,且满足.a=b+km(k为整数),也就是说a和b除以m的最小正余数相同,则称a与b对模m同余,记作a≡b(mod m);

根据以上历法规则和数学工具,就可以利用同余技巧来处理,因为我们计算某一天是星期几,只需要选定一个固定的日期,然后计算和另外一个日期的相差天数对“7”取余即可。


蔡勒公式


其中符号:

w:表示星期,1-星期一,2-星期二,3-星期三,4-星期四,5-星期五,6-星期六,0-星期日;

c:表示年份前两位数值;

y:表示年份后两位数值

m:表示月份,但是对于1、2月份需看作前一年的13、14月,这是为了简化闰年规则导致的复杂度;

d:表示“日”;

以上两个公式中,第二个其实就是第一个公式中的数值,加10后再取模,需要注意的是,在公历中1582年10月5日~1582年10月14日的这十天,是不存在的。


实际应用

比如我们来计算2018年9月2日,带入第一个方程:



w=(18+[18/4]+[20/4]-2*20+[13(9+1)]/5)+2-1)(mod7)

=(18+4+5-40+26+1)(mod7)

=14(mod7)

=0

于是,2018年9月2日这天,就是星期天!

当然,我们现在手机里有了万年历,实际当中就不需要去计算了。


好啦!我的答案就到这里,喜欢我们答案的读者朋友,记得点击关注我们——艾伯史密斯!


艾伯史密斯


这个问题的简化版本就是已知今天星期几,然后根据同余来推算另外某一天是星期几,这其中有很多简化的规则。例如,365除以7的余数为1,因此非闰年的一年后的今天恰好是星期数加一;又例如「判决日原则」,即4月4日,6月6日,8月8日,10月10日,12月12日都与2月最后一天的星期数相同,这是一种便于记忆而且也便于计算数日子的方案,我们可以选取判决日中的任意一天做为推算的标准,更多技巧我在这里就不再介绍了。

一种比较复杂的推算方法涉及到查询「世纪表格」,然而也有一种简单的方法,那就是利用「蔡勒公式(Zeller's congruence)」进行计算,这个公式由德国数学家蔡勒最早提出。这一公式如下图所示,公式来源于维基百科。我们在网络上能找到大量用计算机程序实现蔡勒公式计算的程序。

不过在应用这个公式的时候需要注意,由于罗马教廷曾经在1582年改用了新历法,在1582年10月4日的后一天改为1582年10月15日,这一历法沿用至今,如果涉及到在这之前的推算,需要把多加进去的10天减去。


傅渥成


这个问题需要具体看语境的。

如果告诉你今天是周日,那么问你再过1023344天是周几,这样很容易算。为什么?因为我们只要mod 7就可以了。mod是同余,它具有一些很好的性质——比如说积性。

ab(mod7) = a(mod7)*b(mod7)

所以,就算你问我再过2018的2018次方天是周几,我也很容易算出来,因为我掌握了同余的数学性质。

我给你举一个例子吧。

今天是周日,再过125天是周几?

125(mod7)=5*25(mod7)=5(mod7)*25(mod7)=5(mod7)*4(mod7)=20(mod7)=6(mod7)

所以,再过125天是周6。

我举的125这个例子当然很简单,但对于比较大的数字,也是可以用这个方法算的。

但是,如果问题不是像上面这样问的,那就难了,因为涉及到闰年的问题,也涉及到闰月的问题,比如你问我公元4326年的9月1日是周几,这样的问题我就回答不了了,因为要去算闰年与闰月,算起来很麻烦,而且没有什么意义,所以我不回答这类问题的。


潇轩


星期与我们的生活密切相关,在生活中有人能快读说出任意一天的星期数,让我们感觉真不可思议。其实并没有那么神奇,他也没有完全记住任意一天的星期,那么是如何做到的呢?

速算任意一天的星期只需要进行简单的加减心算和少量的记忆即可完成。

先来感受一下:



学会了吗?不放试试。

知道是为什么吗?

那么2019年又该如何来计算呢?

这是利用基数法来计算星期,这种方法由来已久,记忆简单快捷,易学易记,适合心算,比较实用。

我们为每个公历年份的每个月都确定一个星期基数,称为月基数,是0到6之间的正整数。某个月的月基数等于该月第一天的星期数减去1。

下图是2018年11月的日历,

11月1日是星期四,则11月的月基数为4-1=3。用这种方法再加上日历可以很容易找到每个月的月基数。找到月基数后记住这12组对应关系数即可,然后按照图一的方法进行计算。

那么如果没有日历,可不可以找到下一年的月基数呢?

肯定是可以的 ,该如何做呢?

记住了一年的月基数,前后年份的月基数就很容易推算了。

下一年如果是平年,其月基数是上年各月月基数+1,逢7化0;

下一年如果是闰年,其月基数是由上一年的1、2月月基数+1,3-12月月基数是由上一年的月基数+2;

闰年后接平年,其月基数是由上一年的1、2月月基数+2,3-12年的月基数是由上一年的月基数+1;

那么2019年的月基数就为:

144025036146.



一定要记住,可以去尝试一下,绝对有惊喜。给新年一份惊喜。


胡老师数学课堂


已知今天是9月1日星期六,求9月10日是周几?

9月10日到9月1日差9天除以一周7天等于1余2,所以9月10日就是周六往后数两天,就是周一。

同理计算今天之前的日期,没有余数的话,今天周几,那天就是周几;有余数的话,余数是几,往前数几天。。


请勿极端


每年每月的对应一个小于7的数,就是当月的大于7的日期加上这个数除以7,余数是几就是星期几,这12个数这个要按年计算,60年一甲子,也就是总共有60组数,这样就可以知道任意一年的任何一天了,不过个人觉得没有多大意义


分享到:


相關文章: