这个公式w = (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) % 7的来源时哪里呢
时间: 2023-12-29 09:02:18 浏览: 66
C语言程序设计-编写函数fun其功能是:根据整型形参m,计算如下公式的值:y=1+13+15+17+…+1(2m+1)
5星 · 资源好评率100%
这个公式叫做 Zeller 公式,是由德国天文学家克里斯蒂安·祖勒(Christian Zeller)在 1887 年发明的。它的原始形式是:
$$
h = (q + \lfloor \frac{13(m+1)}{5} \rfloor + K + \lfloor \frac{K}{4} \rfloor + \lfloor \frac{J}{4} \rfloor - 2J) \bmod 7
$$
其中:
- $h$ 表示星期数,0 表示星期日,1 表示星期一,以此类推,6 表示星期六;
- $q$ 表示日期(天数),取值范围为 1-31;
- $m$ 表示月份,取值范围为 1-12;
- $K$ 表示年份的后两位数;
- $J$ 表示世纪数,即年份的前两位数。
但是,在计算星期数时,我们通常不需要考虑世纪数 $J$,因为不同的世纪之间的星期数是相同的。因此,常见的 Zeller 公式简化为:
$$
w = (d + 2m + 3 \lfloor \frac{m+1}{5} \rfloor + y + \lfloor \frac{y}{4} \rfloor - \lfloor \frac{y}{100} \rfloor + \lfloor \frac{y}{400} \rfloor) \bmod 7
$$
其中:
- $w$ 表示星期数,0 表示星期日,1 表示星期一,以此类推,6 表示星期六;
- $d$ 表示日期(天数),取值范围为 1-31;
- $m$ 表示月份,取值范围为 1-12;
- $y$ 表示年份。
这个公式在计算机应用中被广泛使用,已经成为了计算星期数的事实标准。
阅读全文