分享

速算万年某日星期法

 duff 2015-04-26

速算万年某日星期法  
   
公式:某日星期几=(百年%4*5++/4+月星期表++2)%7
   
通同星期偏差表
   
闰年    1 2 3 4 5 6 7 8 9 10 11 12
   
天数     31  29  31  30  31  30  31  31  30  31   30   31
  
 星期表  3    6    0   3    5   1    3   6    2   4     0    2
   
平年  1 2 3 4 5 6 7 8 9 10 11 12
   
天数   31  28  31  30  31  30  31  31  30  31   30   31
   
星期   4   0   0   3   5   1   3   6   2   4    0    2
. 2004年(今年)世上最弱智的算法
   
先复习以上算法,取公式:
   
某年某日星期几=(百年%4*5++/4+月星期表++2)%7
   
通同星期偏差表(闰年表)
        1
2 3 4 5 6 7 8 9 10 11 12
   
天数  31  29  31  30  31  30  31  31  30  31   30   31
   
星期  3   6   0   3   5   1   3   6   2   4    0    2

   
2004年代入。得(其中百年=20,年=04)
   2004
某日星期几=(20%4*5+4+4/4+月星期表++2)%7
             =(0*5
+4+1+月星期表++2)%7
             =(5
+月星期表++2)%7
         =(7
+月星期表+)%7
         =(
月星期表+)%7
         =(
月星期表%7+%7)%7

2004是闰年,月星期表:   3    6    0   3    5   1    3   6    2   4     0    2
   
所以,2004年的算法最简单,几乎不用计算。

.
现以今年的重大节日为例:
  2004
年元旦    1月表=3  1=1  3+1=4 2004年元旦是星期四
  2004
年春节    1月表=3 22=1  3+1=4 2004年春节是星期四
  2004
年元宵节  2月表=6  5=5  6+5=4 2004年元宵节是星期四            
  2004
年妇女节  3月表=0  8=1  0+1=1 2004年妇女节是星期一            
  2004
年植树节  3月表=0 12=5  0+5=5 2004年植树节是星期五            
  2004
年投诉节  3月表=0 15=1  0+1=1 2004年投诉节是星期一
  2004
年清明节  4月表=3  4=4  3+4=0 2004年清明节是星期天
  2004
年五一节  5月表=5  1=1  5+1=6 2004年五一节是星期六
  2004
年青年节  5月表=5  4=4  5+4=2 2004年青年节是星期二
  2004
年母亲节  5月表=5  9=2  5+2=0 2004年母亲节是星期天
  2004
年儿童节  6月表=1  1=1  1+1=2 2004年儿童节是星期二
  2004
年端午节  6月表=1 22=1  1+1=2 2004年端午节是星期二
  2004
年建党节  7月表=3  1=1  3+1=4 2004年建党节是星期四
  2004
年建军节  8月表=6  1=1  6+1=0 2004年建军节是星期天
  2004
年父亲节  8月表=6  8=1  6+1=0 2004年父亲节是星期天
  2004
年教师节  9月表=2 10=3  2+3=5 2004年教师节是星期五
  2004
年中秋节  9月表=2 28=0  2+0=2 2004年中秋节是星期二
  2004
年国庆节 10月表=4  1=1  4+1=5 2004年国庆节是星期五
  2004
年老人节 10月表=4  6=6  4+6=3 2004年老人节是星期三
  2004
年重阳节 10月表=4 22=1  4+1=5 2004年重阳节是星期五
  2004
年立冬节 11月表=0  7=7  0+7=0 2004年立冬节是星期天
  2004
年冬至节 12月表=2 21=0  2+0=2 2004年冬至节是星期二


二十世纪任意日期举例(19%4*5=15
   
公式:某日星期几=(百年%4*5++/4+平年月星期表++2)%7
                   =(19%4*5
++/4+平年月星期表++2)%7
                   =(15
++/4+平年月星期表++2)%7
   
即:  某日星期几=(+/4+平年月星期表++3)%7

  1900
年元旦      1=(0/4*5+0%4+1+3)%7=(0+0+4)%7=4
                 1
月表=4(平年)     4+4=1 1900年元旦是星期一
  1918
年大寒     21=(18/4*5+18%4+21+3)%7=(20+2+24)%7=4
                 1
月表=4(平年)     4+4=1 1918年春节是星期一
  1918
年春节     11=(18/4*5+18%4+11+3)%7=(20+2+14)%7=1
                 2
月表=0(平年)     0+1=1 1918年春节是星期一
  1927
年元旦      1=(27/4*5+27%4+1+3)%7=(30+3+4)%7=2
                 1
月表=4(平年)     4+2=6 1927年元旦是星期六
  1948
年腊八节   18=(48/4*5+48%4+18+3)%7=(60+21)%7=4
                 1
月表=3(闰年)     3+4=0 1927年元旦是星期天
  1949
年国庆      1=(49/4*5+49%4+1+3)%7=(60+1+4)%7=2
                 10
月表=4(平年)     4+2=6 1949年国庆是星期六
  1962
年劳动节    1=(62/4*5+62%4+1+3)%7=(75+2+4)%7=4
                  5
月表=5(平年)     5+4=2 1962年劳动节是星期二
  1999
1231 31=(99/4*5+99%4+31+3)%7=(120+3+34)%7=3
                 12
月表=2(平年)     2+3=5 19991231日是星期五

二十一世纪新千年虫算法(20%4*5=0)
   
公式:某日星期几=(百年%4*5++/4+闰年月星期表++2)%7
                   =(20%4*5
++/4+闰年月星期表++2)%7
   
即:  某日星期几=(+/4+闰年月星期表++2)%7

  2000
年元旦      1=(0+0/4+1+2)%7=(0+0+1+2)%7=3
                 1
月表=3(闰年)     3+3->6 2027年元旦是星期六
  2018
年大寒     20=(18+18/4+20+2)%7=(18+4+20+2)%7=2
                 1
月表=4(平年)     4+2->6 2018年大寒是星期六
  2018
年春节     16=(18+18/4+16+2)%7=(18+4+16+2)%7=5
                 2
月表=0(平年)     0+5=5 2018年春节是星期五
  2027
年元旦      1=(27+27/4+1+2)%7=(3+30+3)%7=1
                 1
月表=4(平年)     4+1=5 2027年元旦是星期五
  2048
年腊八节   22=(48/4*5+48%4+22+2)%7=(60+24)%7=0
                 1
月表=3(闰年)     3+0=3 2027年腊八是星期三
  2099
1231 31=(99/4*5+99%4+31+2)%7=(120+3+33)%7=2
                 12
月表=2(平年)     2+2=4 20991231日是星期四

二十二世纪任意日期举例(21%4*5=5
   
公式:某日星期几=(百年%4*5++/4+平年月星期表++2)%7
                   =(21%4*5
++/4+平年月星期表++2)%7
                   =(5
++/4+平年月星期表++2)%7
   
即:  某日星期几=(+/4+平年月星期表+)%7

  2100
年元旦      1=(0/4*5+0%4+1)%7=(0+0+1)%7=1
                 1
月表=4(平年)     4+1=4 2100年元旦是星期五
  2100
131  31=(0/4*5+0%4+31)%7=(0+0+31)%7=3
                 1
月表=4(平年)     4+3=0 2100131日是星期天
  2100
21    1=(0/4*5+0%4+1)%7=(0+0+1)%7=1
                 2
月表=0(平年)     0+1=1 210021日是星期一
  2100
228  28=(0/4*5+0%4+28)%7=(0+0+28)%7=0
                 2
月表=0(平年)     0+0=0 2100228日是星期天
  2100
31    1=(0/4*5+0%4+1)%7=(0+0+1)%7=1
                 3
月表=0(平年)     0+1=1 210031日是星期一
  2100
331  31=(0/4*5+0%4+31)%7=(0+0+31)%7=3
                 3
月表=0(平年)     0+3=3 2100331日是星期三
  2100
1231 31=(0/4*5+0%4+31)%7=(0+0+31)%7=3
                 12
月表=2(平年)     2+3=5 21011231日是星期五
  2101
年元旦      1=(1/4*5+1%4+1)%7=(0+1+1)%7=2
                 1
月表=4(平年)     4+2=6 2101年元旦是星期六
  2101
131  31=(1/4*5+1%4+31)%7=(0+1+31)%7=4
                 1
月表=4(平年)     4+4=1 2101131日是星期一
  2101
21    1=(0/4*5+1%4+1)%7=(0+1+1)%7=2
                 2
月表=0(平年)     0+2=2 210121日是星期二
  2101
228  28=(0/4*5+1%4+28)%7=(0+1+28)%7=1
                 2
月表=0(平年)     0+1=1 2101228日是星期一
  2101
31    1=(0/4*5+1%4+1)%7=(0+1+1)%7=2
                 3
月表=0(平年)     0+2=2 210131日是星期二
  2101
331  31=(0/4*5+1%4+31)%7=(0+1+31)%7=4
                 3
月表=0(平年)     0+4=4 2101331日是星期四
  2101
1231 31=(0/4*5+1%4+31)%7=(0+1+31)%7=4
                 12
月表=2(平年)     2+4=6 21011231日是星期六
  2104
229  29=(0/4*5+1%4+29)%7=(0+1+29)%7=2
                 2
月表=6(闰年)     6+2=1 2104229日是星期一
  2104
31    1=(0/4*5+1%4+1)%7=(0+1+1)%7=2
                 3
月表=0(闰年)     0+2=2 210431日是星期二
  2199
1231 31=(99/4*5+99%4+31)%7=(120+3+31)%7=0
                 12
月表=2(平年)     2+0=2 21991231日是星期二

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多