复活节的月份( 1-12 )和日期。如果没有给出任何参数,给出的结果是当前的一年。这是 在CoffeeScript 的匿名公历算法实现的。
gregorianEaster = (year = (new Date).getFullYear()) ->
a = year % 19
b = ~~(year / 100)
c = year % 100
d = ~~(b / 4)
e = b % 4
f = ~~((b + 8) / 25)
g = ~~((b - f + 1) / 3)
h = (19 * a + b - d - g + 15) % 30
i = ~~(c / 4)
k = c % 4
l = (32 + 2 * e + 2 * i - h - k) % 7
m = ~~((a + 11 * h + 22 * l) / 451)
n = h + l - 7 * m + 114
month = ~~(n / 31)
day = (n % 31) + 1
[month, day]
以西欧算法(现代算法)实现,计算1900~2099年的复活节日期C++实现
#include<iostream>
using namespace std;
//西欧教会算法
void Easter_Day(int y)
{
if(y<1900)
cout<<"年份小于算法"<<endl;
else if(y>2099)
cout<<"年份大于算法"<<endl;
else
{
int a=y % 19;
int b=y / 100;
int c=y % 100;
int d=b / 4;
int e=b % 4;
int f=(b+8) / 25;
int g=(b-f+1) / 3;
int h=(19*a+b-d-g+15) % 30;
int i=c / 4;
int k=c % 4;
int l=(32+2*e+2*i-h-k) % 7;
int m=(a+11*h+22*l) / 451;
int n=(h+l-7*m+114) / 31;
int p=(h+l-7*m+114) % 31;
cout<<y<<"年复活节在"<<n<<"月"<<p+1<<"日"<<endl;
}
}
using namespace std;
int main(void)
{
int y;
while(cin>>y)
{
Easter_Day(y);
}
}