怎样计算任一天是星期几_怎么算几月几日星期几

其他范文 时间:2020-02-27 23:58:30 收藏本文下载本文
【www.daodoc.com - 其他范文】

怎样计算任一天是星期几由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“怎么算几月几日星期几”。

怎样计算任一天是星期几

摘要:

最常见的公式:

W = [Y-1] + [(Y-1)/4]2C + y + [y/4] + [13 *(M+1)/ 5] + d[(Y-1)/100] + [(Y-1)/400],[...]表示只取整数部分。第一项表示需要加上被4整除的年份数,第二项表示需要去掉被100整除的年份数,第三项表示需要再加上被400整除的年份数。之所以Y要减一,这样,我们就得到了第一个计算某一天是星期几的公式:

W =(Y-1)*365 + [(Y-1)/4][(2004-1)/100] + [(2004-1)/400] +31+29+31+30+1)

= 731702,731702 / 7 = 104528„„6,余数为六,说明这一天是星期六。这和事实是符合的。

上面的公式(1)虽然很准确,但是计算出来的数字太大了,使用起来很不方便。仔细想想,其实这个间隔天数W的用处仅仅是为了得到它除以7之后的余数。这启发我们是不是可以简化这个W值,只要找一个和它余数相同的较小的数来代替,用数论上的术语来说,就是找一个和它同余的较小的正整数,照样可以计算出准确的星期数。

显然,W这么大的原因是因为公式中的第一项(Y-1)*365太大了。其实,(Y-1)*365 =(Y-1)*(364+1)

=(Y-1)*(7*52+1)

= 52 *(Y-1)* 7 +(Y-1),这个结果的第一项是一个7的倍数,除以7余数为0,因此(Y-1)*365除以7的余数其实就等于Y-1除以7的余数。这个关系可以表示为:

(Y-1)*365 ≡ Y-1(mod 7).

其中,≡是数论中表示同余的符号,mod 7的意思是指在用7作模数(也就是除数)的情况下≡号两边的数是同余的。因此,完全可以用(Y-1)代替(Y-1)*365,这样我们就得到了那个著名的、也是最常见到的计算星期几的公式:

W =(Y-1)+ [(Y-1)/4]7 +(M-1)* 28 + d + i.

(当M≥3)

其中[...]仍表示只取整数部分;M和d分别是想算的日子的月份和日数;平年i=0,闰年=1。对于M≥3的表达式需要说明一下:[13*(M+1)/5]-7算出来的就是上面第二个表中的平年累积值,再加上(M-1)*28就是想算的日子的月份之前的所有月份的总天数。这是一个很巧妙的办法,利用取整运算来实现3,2,3,2,3的循环。比如,对2004年5月1日,有:

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

计算任何一天是星期几的C语言源代码.D = [ 13 *(5+1)/ 5 ]7 +(M-1)* 28 + d.(3≤M≤14)(4)

上面计算星期几的公式,也就可以进一步简化成:

W =(Y-1)+ [(Y-1)/4]7 +(M-1)* 28 + d.

因为其中的-7和(M-1)*28两项都可以被7整除,所以去掉这两项,W除以7的余数不变,公式变成:

W =(Y-1)+ [(Y-1)/4][(2003-1)/100] + [(2003-1)/400] + [13*(13+1)/5] + 1 = 2002 + 500C mod 4)* 220 mod 4)* 24

= 4.

把公式(6)代入公式(5),经过变换,可得:

(Y-1)+ [(Y-1)/4]C mod 4)* 2[(Y-1)/100] + [(Y-1)/400]这四项,在计算每个世纪第一年的日期的星期时,可以用(41来代替。这个公式写出来就是:

W =(41 + [13 *(M+1)/ 5] + d.(8)

有了计算每个世纪第一年的日期星期的公式,计算这个世纪其他各年的日期星期的公式就很容易得到了。因为在一个世纪里,末尾为00的年份是最后一年,因此就用不着再考虑“一百年不闰,四百年又闰”的规则,只须考虑“四年一闰”的规则。仿照由公式(1)简化为公式(2)的方法,我们很容易就可以从式(8)得到一个比公式(5)更简单的计算任意一天是星期几的公式:

W =(41 +(y-1)+ [y/4] + [13 *(M+1)/ 5] + d.(9)

式中,y是年份的后两位数字。

如果再考虑到取模运算不是四则运算,我们还可以把(44q

= CC mod 4)* 2 =(42C + 8 * [C/4]

≡ [C/4]2C + y + [y/4] + [13 *(M+1)/ 5] + d40 + 4 + 1 + [13 *(5+1)/ 5] + 1C + y + [y/4] + [13 *(M+1)/ 5] + d-1.(13)

这样,我们终于一劳永逸地解决了不查日历计算任何一天是星期几的问题。

下载怎样计算任一天是星期几word格式文档
下载怎样计算任一天是星期几.doc
将本文档下载到自己电脑,方便修改和收藏。
点此处下载文档

文档为doc格式

    热门文章
      整站推荐
        点击下载本文