首先列出「菜農與蔡勒和基姆拉爾森三個星期公式」:
蔡勒星期公式=(203+百年/4-2*百年+年+年/4+13*(月+1)/5+日-1)%7
或:蔡勒星期公式
=(203+百年/4-2*百年
+年+年/4+(13*月+8)/5+日)%7
或:蔡勒星期公式
=(203+百年/4-2*百年
+年+年/4+(13*月+3)/5+日+1)%7
基姆拉爾森星期公式=(百年/4+百年*5+年+年/4+(13*月+3)/5+日+1)%7
或:基姆拉爾森星期公式=(百年/4+百年*5+年+年/4+(13*月+8)/5+日)%7
或:基姆拉爾森星期公式=(百年/4+百年*5+年+年/4+13*(月+1)/5+日-1)%7
注意:(13*月+8)/5+日最簡潔!!!
菜農星期公式=((百年%4)*5+年+年/4+(13*月+8)/5+日)%7
或:菜農星期公式=((百年&3)*5+年+(年》2)+(13*月+8)/5+日)%7
我們可以看到三個星期公式的組成:
1.百年(日期/100)
蔡勒星期公式有:
203+百年/4-2*百年
基姆拉爾森星期公式有:
百年/4+百年*5
菜農星期公式有:(
百年%4)*5
2.年(日期%100)
三個公式都有:
年+年/4
3.月日
三個公式都有:(13*月+8)/5+日
可以看出三個公式最大的不同點在於百年的演算法構成大不一樣。
蔡勒星期公式中的「-2*百年」最為獨特,真不明白在幹什麼。
其次是基姆拉爾森星期公式中的「百年*5」,有5的倍數的身影。
而菜農星期公式中的「(百年%4)*5」構成了0,5,10,15,0,5,10,15,...序列
並且((百年%4)*5)%7又構成了我們需要的0,5,3,1,0,5,3,1,...序列
蔡勒星期公式需要
0,5,3,1,0,5,3,1,...序列
基姆拉爾森星期公式有
0,5,10,15,0,5,10,15,...序列的念頭
而菜農星期公式兩個序列都滿足,即百年的計算核心實際就是0,5,10,15,0,5,10,15,...序列!!!
在數學中,(百年%4)*5=(百年*5)%20,即都能得到0,5,10,15,0,5,10,15,...序列
故即可衍生出《菜農第二星期公式》!!!
菜農第二星期公式
=((百年*5)%20+年+年/4+(13*月+8)/5+日)%7
其中:其中: 百年=0~99,年=0~99,月=1~12,日=1~28/29/30/31 當月=1或2時,月=月+12或月=月+4,年=年-1
假若用:日期=百年*100+年,百年=日期/100
故有:菜農第二星期公式
=(((日期/100)*5)%20+日期%100+(日期%100)/4+(13*月+8)/5+日)%7
其中:其中: 日期=0~9999,月=1~12,日=1~28/29/30/31 當月=1或2時,月=月+12或月=月+4,日期=日期-1
大家可以隨意採用:
菜農星期公式=((百年%4)*5+年+年/4+(13*月+8)/5+日)%7
或:菜農星期公式=((百年&3)*5+年+年/4+(13*月+8)/5+日)%7
菜農第二星期公式
=((百年*5)%20+年+年/4+(13*月+8)/5+日)%7
或:菜農第二星期公式
=(((日期/100)*5)%20+日期%100+(日期%100)/4+(13*月+8)/5+日)%7
2011.7.17 9:18 於西安雁塔菜地
基姆拉爾森公式
基姆拉爾森公式 kim larsen calculation formula 用於給定年份 y 月份 m 和日子 d 的條件下,計算該天是星期幾。初始條件 從公元 0 年 1 月 1 日,星期日開始計算 ps 公元 0 年不是閏年 輸入 y,m,d 三個整數表示年月日。輸出 w in 0,6 分別表...
基姆拉爾森計算公式
功能描述 根據輸入的日期判斷當天是週幾 演算法如下 基姆拉爾森計算公式 w d 2 m 3 m 1 5 y y 4 y 100 y 400 mod 7 在公式中d表示日期中的日數,m表示月份數,y表示年數。注意 在公式中有個與其他公式不同的地方 判斷日期是該月的第幾周 datetime.now.da...
基姆拉爾森公式 判斷星期幾
時間限制 2000 ms 記憶體限制 65535 kb 難度 2 描述 acm的iphxer經常忘記某天是星期幾,但是他記那天的具體日期,他希望你能寫個程式幫幫他。輸入 每行有三個整數 year,month,day,日期在1600年1月1日到9600年1月1日之間 輸出輸出對應的星期,用乙個整數表示...