格里高利历认为地球绕太阳公转的周期是 365.2425 天(实际有误差),如果每年只有 365 天,则每年会比太阳年少 0.2425 天,大约 14 天,因此每 4 年设置一个闰年,天数为 366 天,让每年的平均天数变为 365.25 天, 更接近太阳年。而这样平均每年又会比太阳年多 0.0075 天,即 34×10−2,每 400 年会多 3 天。为此,格里高利历规定,世纪年份中,只有 400 的倍数才作为闰年,相当于每 400 年中,把前 3 个整百年多出的 3 天减去。
通过这两条规则,终于让年平均天数等于其认为的太阳年 365.2425 天。
bool leap_year(int year) {
return year % 4 == 0 && year % 100 != 0 || year % 400 == 0;
}