分類:數學/難題
2010/09/25 00:13
"王氏口訣":心算 "某日是星期幾" !
**作者:本公式及口訣由 (筆名)王駿( Mike Wang )設計提供。
**請到 yahoo 搜尋 "某日是星期幾",歡迎免費轉載或做為教材。
**部落格:http://tw.myblog.yahoo.com/tools-241
1.本公式適用於 "1900/03/01- 2100/02/28"
或 "光緒26年/03/01 - 民國189年02/28",
此期間4年一潤(2月有29天), 相隔28年的同一天其 "星期幾" 也會相同,
因此可以將年份往前或往後移動28年的倍數以方便計算,
西元年份 = (民國年份 + 1911年),為方便計算,請選擇合適的值代入。
Y= 西元年份-2008+28的倍數 = 民國年份-97+28的倍數,
如果月份為 "1月或2月", 則Y還要再減一年. 口訣中以 "(去年)" 提醒。
2.十二個月的 "M月對照值" 口訣( 請記起來隨時可用 ):
"(去年)1上(榜);(去年)2留(級);扇舞試衣我閃溜;溜去移巴士;
久鄰(JOLIN)邀您兒,邀邀我,邀兒您(去聽演唱會)"。
M01月=3 ==> " 1,3" 記成 "(去年)1上(榜);" ;
M02月=6 ==> " 2,6" 記成 "(去年)2留(級);" ;
M03月=5 ==> " 3,5" 記成 "扇舞";
M04月=1 ==> " 4,1" 記成 "試衣";
M05月=3 ==> " 5,3" 記成 "我閃";
M06月=6 ==> " 6,6" 記成 "溜;溜";
M07月=1 ==> " 7,1" 記成 "去移";
M08月=4 ==> " 8,4" 記成 "巴士;";
M09月=0 ==> " 9,0" 記成 "久鄰(JOLIN)";
M10月=2 ==> "10,2" 記成 "邀您兒,";
M11月=5 ==> "11,5" 記成 "邀邀我,";
M12月=0 ==> "12,0" 記成 "邀兒您(去聽演唱會)"。
3.星期幾Week = (Y+ [Y/4]取整數 + M月對照值 + D日 )
除以 7 的餘數
例: 1900/09/08(光緒26年的9月8日) 中秋是星期六
Y= 1900+(28 x 4 - 2008) = 1900 + 112 - 2008 = 2012 - 2008 = 4,
w = ( 4 + [4/4] + (M在九月的對照值)0 + 8日 ) = 13
week = 13 % 7 = 6 (星期六)
例: 民國001/01/01 是星期幾?
Y = 1+(28 x 4 - 97) -1(如果月份為1月或2月則Y要再減一年) = 15
w = ( 15 + [15/4]) + 3 + 1 = 15 + 3 + 3 + 1 = 22
week = 22 % 7 = 1 (星期一)
例: 民國001/02/17 除夕是星期幾?
Y = 1+15 -1(如果月份為1月或2月則Y要再減一年) = 15
w = ( 15 + [15/4]) + 6 + 17 = 15 + 3 + 6 + 17 = 41
week = 41 % 7 = 6 (星期六)
例: 民國001/09/25 中秋是星期幾?
Y= 1+15 = 16
w = ( 16+ [16/4] + 0 + 25) = 16 + 4 + 0 + 25 = 45
week = 45 % 7 = 3 (星期三)
例: 民國099/01/01 是星期幾?
Y = 99+(28 x 0 - 97) -1(如果月份為1月或2月則Y要再減一年)
= 99-97 -1 = 1
w = ( 1 + [1/4]) + 3 + 1 = 1 + 0 + (M在一月的對照值)3 + 1 = 5
week = 5 % 7 = 5 (星期五)
例: 民國099/02/13 除夕是星期幾?
Y = 99 - 97 -1(如果月份為1月或2月則Y要再減一年) = 1
w = ( 1 + [1/4]) + 6 + 13 = 1 + 0 + (M在二月的對照值)6 + 13 = 20
week = 20 % 7 = 6 (星期六)
例: 民國099/09/22 中秋是星期幾?
Y = 99 - 97 = 2
w = ( 2 + [2/4]) + 0 + 22 = 2 + 0 + (M在九月的對照值)0 + 22 = 24
week = 24 % 7 = 3 (星期三)
例: 民國100/01/01 是星期幾?
Y = 100+(28x0-97) -1(如果月份為1月或2月則Y要再減一年)
= 100-97 -1 = 2
w = ( 2 + [2/4]) + 3 + 1 = 2 + 0 + 3 + 1 = 6
week = 6 % 7 = 6 (星期六)
例: 民國100/02/02 除夕是星期幾?
Y = 100-97 -1(如果月份為1月或2月則Y要再減一年) = 2
w = ( 2 + [2/4]) + 6 + 2 = 2 + 0 + 6 + 2 = 10
week = 10 % 7 = 3 (星期三)
例: 民國100/09/12 中秋是星期幾?
Y = 100-97 = 3
w = ( 3 + [3/4]) + 0 + 12 = 3 + 0 + 0 + 12 = 15
week = 15 % 7 = 1 (星期一)
** 高斯符號:數學王子 "高斯(C. Gauss 1777-1855)" 提出 "[取整數]" 的符號,
例 [5.03] = 5 ;若為負數則小數以下直接進位, 例 [-5.03] = -6。
** 潤年口訣:"四年一潤,百年不潤,四百年再潤"。
因為地球環繞太陽一週約為 "365.2422天",
四年一潤(例2004,2008,2012,2016);百年不潤(例1800,1900,2100,2200,
2300,2500);四百年再潤(例1600,2000,2400)。 影響星期幾的變動值 :
365天 x 西元年份 + [西元/4] - [西元/100] + [西元/400]。
** 因1900年不是潤年, 所以公式若要使用於1800/03/01至1900/02/28時 , 星期
幾還要右調1天;若使用於2100/03/01至2200/02/28時,星期幾還要左調1天。
** 有興趣者或程式設計者請參考:在公元4年3月1日以前的潤年是不規則的,
後來為修正累積的誤差,將早期儒略曆(Julian calendar)1582年10月4日的隔
天訂為現行的公曆曆法格里曆(Gregorian calendar)1582年10月15日;因
為英國是晚在1752年9月才改用公曆,而此時誤差已達11天,因此由美國
人設計的 Unix 系統中若執行 "cal 9 1752" 可查到1752年的9月份是做過修
正的,中間缺少了 11 天。1752/9/2 是星期三,隔天就是1752/9/14 星期四。
例: 1752/09/14 是星期幾?
Y = 1752 +(28 x 10 - 2008) = 24
w = ( 24+ [24/4]) +(M在九月的對照值)0 + 14 = 24 + 6 + 0 + 14 = 44
week = 44 % 7 = 2 => 因1800年及1900年不是潤年,向右調2天為星期四。
..................................................................................................................
備註:您可以 "免費" 轉載上列的內容,請包含:
作者筆名,"歡迎免費轉載" 字樣,部落格網址。
..................................................................................................................
*對程式設計有興趣者請參考:
試題02:試設計能應付 "商業用途" 的 "日期相關" 副程式 ;試題03:設計時 "不使用各月對照值",...