蔡勒公式的介绍
一、蔡勒公式
蔡勒公式是德国数学家克里斯蒂安·蔡勒于19世纪提出的计算星期的数学公式,通过将年月日转换为特定参数进行模7运算,推算出给定日期对应的星期数。公式适用于1582年10月15日格里高利历实施后的日期,计算时需将1、2月视为上一年的13、14月,结果中0代表星期日,6代表星期六。
1.1计算公式
1.2符号意义
w:星期; w对7取模得:0-星期日,1-星期一,2-星期二,3-星期三,4-星期四,5-星期五,6-星期六
c:世纪(注:一般情况下,在公式中取值为已经过的世纪数,也就是年份除以一百的结果,而非正在进行的世纪,也就是现在常用的年份除以一百加一;不过如果年份是公元前的年份且非整百数的话,c应该等于所在世纪的编号,如公元前253年,是公元前3世纪,c就等于-3)
y:年(一般情况下是后两位数,如果是公元前的年份且非整百数,y应该等于cMOD100+100)m:月(m大于等于3,小于等于14,即在蔡勒公式中,某年的1、2月要看作上一年的13、14月来计算,比如2003年1月1日要看作2002年的13月1日来计算)
d:日
[ ]代表取整,即只要整数部分。
二、代码实现
#include <iostream>
using namespace std;
int main() {int year, month, day;cout << "请用数字输出年、月、日,并使用空格隔开:" << endl;while (cin >> year >> month >> day) {if (month < 3) {year -= 1;month += 12;}char week[7][10] = {"Sunday", "Monday", "Tuesday", "Wednesday","Thursday", "Friday", "Saturday"};int c = int(year / 100), y = year - 100 * c;int w = int(c / 4) - 2 * c + y + int(y / 4) + (26 * (month + 1) / 10) +day - 1;w = (w % 7 + 7) % 7;cout << week[w] << endl;}return 0;
}