心算任何一天是星期幾

zszslsp 樓主

2013-06-27 02:57

不動紙筆,電腦,不查萬年曆,僅憑心算,說出任何一天是星期幾,讀過這篇文章後,你就可以做到。

我最先是從一本心理學書上知道,有人能說出幾十年里任何一天是星期幾,但其智商很低,被稱為「白痴天才」。當時覺得很神奇,就想找到一種方法,通過簡單計算來得到結果,經過一番研究,終於獨立找到了演算法。若干年後,我在網上看到了蔡勒公式,知道蔡勒也找到了類似的方法。但蔡勒公式並沒那麼簡單,一般人很難用蔡勒公式來實現心算。前幾天,又看到了維基百科的相關內容,其中的方法原理與我的一樣,但仍顯凌亂,計算涉及的數字也稍大,不便使用。而且重點只說方法,沒有詳細解釋原理,為什麼那麼算,時間久了,難免容易遺忘。這裡,我用當初研究時的思路,把我掌握的演算法介紹給大家。

首先,如果某月的1日是星期1,那麼這個月的任何一天是星期幾很容易算出來,把日數除以7求餘數即可,例如9日就是星期2。

如果1日不是星期1怎麼辦?可以看上月底是星期幾,把上月底星期數當成本月的月基數,只要把月基數再加上本月算出的餘數就行了,因為這月的星期數就是從那天往後數的。例如上月底是星期3,那麼本月9日就是3+2=星期5。

在現行曆法里,各月的天數是固定的,知道了1月份的月基數,以後各月的月基數都可以推算出來。如果1月1日是星期1,那麼1月31日就是星期3,這就是2月份的月基數;據此又可以算出2月28日(暫只考慮平年)還是星期3,這就是3月份的月基數;3月31日是星期6,是4月份的月基數,……一年12個月的月基數分別是0,3,3,6,1,4,6,2,5,0,3,5,這串數字叫做基本月基數(後文簡稱月基數),非常重要,要心算星期必須記住。每季度3個數字一組,也很好記,即033,614,625,035。

但實際上,每年1月份的月基數不一定是0,可以是0——6的任何一個數字,為此,可以引入一個與月基數類似的年基數概念:上年底的星期數,就是今年的年基數。把年基數與基本月基數相加,就是各月實際的月基數。例如,年基數為4,那麼8月份的月基數就是4+2=6,實際月基數是6。

我們只要知道某年的年基數,這一年任何一天是星期幾也就可以很容易算出來。例如,2013年的年基數是1,2013年5月23日是星期幾?年基數+月基數+23/7的餘數=1+1+2=4,那天是星期4。

如何才能知道某年的年基數?如果只是有限的三兩年,可以查下日曆,然後記住就行了,但要知道任何一年的年基數,只能通過計算。

(未完待續)

脫水模式 只看樓主

戴套打飛機

2013-06-27 09:56

1樓

挺有意思,快更新

評論 只看TA

戴套打飛機

2013-06-27 10:02

2樓

年基數要靠背嗎?等會兒演算下,往後倒算能算嗎?

評論 只看TA

讓一部分人先窮

2013-06-27 10:08

3樓

mark

評論 只看TA

梁3伯

2013-06-27 10:11

4樓

頂起!

評論 只看TA

zszslsp 樓主

2013-06-27 10:20

5樓

本打算沒人跟就不寫了

-------------------

首先要明白,一個平年365天,用7除餘1天,所以在星期計算意義上,過一個平年等於過1天,一個閏年相當於2天。

如果一個世紀的00年的年基數是0,在只考慮平年的情況下,某年的年基數就是年份數除以7的餘數,由於實際曆法是4年一閏,還要加上因閏年增加的天數。例如1917年,17%7=3,而17年里有4個閏年,所以1917年的年基數就是3+4=7=0。再例如1936年,36/7餘1,而36年里有9個閏年,9%7=2,1+2=3,年基數是3 。

要心算星期數,年基數計算是重點,應儘可能簡化。在同一個世紀里,每經過28年,不僅按平年算增加的28天可以被7整除,而且其中7個閏年增加的7天也正好可以被7整除,所以在同一個世紀里,年基數是28年一循環。當年數大於28,56,84時,可以減去這些數字,以求簡化,結果是一樣的。例如1959年,與1903年的年基數是一樣的,而03年顯然更簡單。再例如,1981年,差3年到84年,28-3=25,所以81-56=25,這比直接心算81-56更簡單。另外,星期計算中+6=-1,+5=-2。例如5+6=5-1=4,4+5=4-2=2。

再說說閏年的計算。我們在計算年基數時,是見到閏年就直接多加一天,但實際這一天是加在了2月29日,所以從2.月29日以後的計算結果沒有問題,而之前的1,2月份就多加了一天,必須減去。例如,1904年的年基數是5,3月份的月基數是3,所以1904年3月1日就應該是(5+3+1)%7=2,是星期2;前一天的2月29日就是星期1,但計算結果=年基數+月基數+日數=(5+3+29)%7=2,必須再減去一天,才是正確結果星期1。(%符號表示求餘數)

1900年的年基數正好就是0,從1900——1999年都可以用上面的方法來算。例如1949年10月1日星期幾?

49年-28年=21年的年基數是0+5=5,10月份的月基數0,所以5+0+1=6,開國大典是星期6。

37年7月7日星期幾?

37年-28年=9年,年基數是2+2=4,月基數是6,日數7可以直接捨去不算,4+6=4-1=3,七七事變那天是星期3。

(未完待續)

評論 只看樓主

zszslsp 樓主

2013-06-27 10:29

6樓

更正:1937年7月7日星期幾?(原文漏了19)

37年-28年=9年,年基數是2+2=4,月基數是6,日數7可以直接捨去不算,4+6=4-1=3,七七事變那天是星期3。

評論 只看樓主

傷燕歸來細雨中

2013-06-27 10:32

7樓

我也是這個思路,早在十多年前,我就會心算任何年月日的星期幾了。只不過我不是以1900年為基準,而是以1996年為基準,計算近幾十年更方便。

年基數=年差(公元年數-1996),在額外加上一個閏數。

閏數=年差/4,如果是正數(即1996年以後),則小數一律進1。如果是負數(即1996年之前),則小數一律捨去。

評論 只看TA

zszslsp 樓主

2013-06-27 11:25

8樓

並不是每一個00年的年基數都是0,也可以是其他數字,為此,我們可以像月基數和年基數一樣,再用一個世紀基數來調整,道理是完全一樣的。

現行的曆法是400年97閏,整百的年份只有能被400整除的才是閏年,其他的不是。1700年,1800年,1900年都是平年而不是閏年,2000年是閏年。(400+97)%7=0,整除無餘數,所以現行公曆每400年一循環,只要知道連續四個世紀的世紀基數就行了。

先說第一個世紀,沒有00年,公元1年1月1日是星期1,年基數+月基數+日數=1+0+1=2,只要再加上世紀基數就能求出星期數1,顯然,世紀基數是6;99年12月31日,年基數+月基數+日餘數=4+5+3=12,12%7=5,再加上世紀基數,5+6=5-1=4,那天是星期4,4就是公元100——199年的世紀基數;同理,4+5=4-2=2,公元199年12月31日是星期2,也就是公元200——299年的世紀基數;…公元300——399年的世紀基數是,0。以後就6,4,2,0循環往複。在具體計算時,可以把表示世紀的百位和千位數字當成一個二位數用4除,當餘數是0,1,2,3時,對應的世紀基數就分別是6,4,2,0。例如18**年,18%4=2,對應的世紀基數是2;19**年對應的世紀基數是0;20**年的世紀基數是6,這3個世紀的基數經常用,記住就行了,不用臨時算。

整百同時又是閏年的00年份,如2000年,多出的一天不能被計算出來,而是直接加在了世紀基數上,所以後面年基數的計算,不受任何影響。

1萬年等於25個400年,2千年等於5個400年,所以無論給出的年份數字有多大,萬位以上的都可以捨去,夠2000就減2000,夠4000就減4000,…只用不到2000的餘數來算世紀基數,結果不受影響。例如

公元12345678年9月10日星期幾?

年份數字雖大,前面的1234都可以捨去不算,後面的5678-4000=1678,16**對應的世紀基數是6,78-56=22,年基數是1+5=6,月基數是5,日餘數3,所以(6+6+5+3)%7=6,那一天星期6。

至此,我們可以輕鬆的計算出公元後任何一天(按現行公曆法則推延,不說儒略曆)是星期幾,一般不用動筆。心算能力稍差的可以用幾個手指頭輔助計算。在世紀基數+年基數+月基數+日餘數,逐個相加過程中,注意運用+6=-1,+5=-2的技巧來簡化,且當中間結果超過7時,立即減7,使中間結果保持在6以內,這樣,一隻手的幾根手指就足夠用了。對於星期的計算來說,掐指一算,知過去將來並非難事。

(未完待續)

評論 只看樓主

zszslsp 樓主

2013-06-28 10:05

9樓

作為趣味問題,按照現行公曆規則,將曆法向前推至公元前的某一天,這種方法還能用嗎?回答是:可以用。根據400年一循環的原則,可以把公元前的某一天轉換成與之等效的公元後日期來算。

由於沒有公元0年,公元前1年實際相當於公元0年,與公元400年正好相差400年,如果公元前1年記作-1,只要數字上再加401就可以得到與之等效的公元400年,公元前1——前400年都可以這樣來轉換到公元後。具體計算上,可以把公元前年份用400來除,也就是減去若干個400年,得到不足400的年份,用401減這個年份,就得到與之等效的公元後年份,然後根據前面介紹的方法計算星期數就行了。

例如,武王伐紂是在公元前1046年1月20日,那一天是星期幾?

1046-800=246,用401-246=155,世紀基數4,年基數6+6=6-1=5,月基數0,日餘數6,(4+5+0+6)%7=1,所以武王伐紂那天是星期1。

評論 只看樓主

子藤源

2013-06-28 10:10

10樓

評論 只看TA

zszslsp 樓主

2013-06-29 00:03

11樓

有人頂,就繼續寫

--------------------

評論 只看樓主

卡特琳那

2013-06-29 00:36

12樓

簡單的算數,小學生都會算,問題是這玩意沒什麼用啊

評論 只看TA

lamzw

2014-01-26 00:39

13樓

@卡特琳那 12樓 2013-06-29 00:36:12

簡單的算數,小學生都會算,問題是這玩意沒什麼用啊

-----------------------------

看以裝個白痴去參加最強大腦

評論 只看TA

一般二娃

2014-01-26 01:03

14樓

馬克留名,樓主這個方法很好,有沒有驗證過啊,正確率高不高呢?

等下來慢慢看。說不定有用呢。

評論 只看TA
推薦閱讀:

12星座一星期運程預報 (2017年9月21日
只不過最好的那個人尚未到來2015年02月26日 星期四B08 男左女右
買狗狗千萬小心「星期狗」
中國傳統禮儀對現代社會成長的意義2010年9月4日星期六_禮儀網
我竟是她第75個相親對象2013年04月25日 星期四B08 男左女右·讀報闖關

TAG:心算 | 星期 | 一天 |