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

丙戌探索


這個問題的簡化版本就是已知今天星期幾,然後根據同餘來推算另外某一天是星期幾,這其中有很多簡化的規則。例如,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日是周幾,這樣的問題我就回答不了了,因為要去算閏年與閏月,算起來很麻煩,而且沒有什麼意義,所以我不回答這類問題的。


瀟軒


答:在初等數論中,有很多根據年月日計算星期的公式,我來介紹一個。


相關知識

在介紹公式前,我們先來了解一些數學和公曆相關的知識:

(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日這天,就是星期天!

當然,我們現在手機裡有了萬年曆,實際當中就不需要去計算了。


好啦!我的答案就到這裡,喜歡我們答案的讀者朋友,記得點擊關注我們——艾伯史密斯!


艾伯史密斯


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

9月10日到9月1日差9天除以一週7天等於1餘2,所以9月10日就是週六往後數兩天,就是週一。

同理計算今天之前的日期,沒有餘數的話,今天周幾,那天就是周幾;有餘數的話,餘數是幾,往前數幾天。。


請勿極端


每年每月的對應一個小於7的數,就是當月的大於7的日期加上這個數除以7,餘數是幾就是星期幾,這12個數這個要按年計算,60年一甲子,也就是總共有60組數,這樣就可以知道任意一年的任何一天了,不過個人覺得沒有多大意義


分享到:


相關文章: