計算のしかた
復活祭計算に使う月齢は、ホンモノの月の月齢ではなく、仮想的な月ですから、比較的単純に計算することができます。ホンモノの月の月齢で計算すると、時差の関係で、地球の異なる地点で満月になる瞬間の日付が異なってしまい、それが日曜日にからんだり春分の日にからんだりすると、復活祭の日が大幅にズレてしまう可能性があるからです。全世界で同日に復活祭を祝うために、仮想的な月で計算するのです。なお、現実の春分の日はやはり時差の関係で異なることがありますが、教会の春分の日は絶対に3月21日だとしているのもこのためです。
Perlでの計算の仕方です。$easterdate=caleaster(2011); とすると、2011年の復活祭の日付(4月24日)が、0424という形で$easterdateに入ります。sub caleaster {
local $cale_a,$cale_b,$cale_c,$cale_d,$cale_e,
$cale_f,$cale_g,$cale_h,$cale_i,$cale_k,
$cale_l,$cale_m,$ret_m,$ret_d,$param;
($param)=@_;
$cale_a=$param%19;
$cale_b=int($param/100);
$cale_c=$param%100;
$cale_d=int($cale_b/4);
$cale_e=$cale_b % 4;
$cale_f=int(($cale_b+8)/25);
$cale_g=int(($cale_b-$cale_f+1)/3);
$cale_h=($cale_a*19+$cale_b-$cale_d-$cale_g+15)%30;
$cale_i=int($cale_c/4);
$cale_k=$cale_c%4;
$cale_l=(32+2*$cale_e+2*$cale_i-$cale_h-$cale_k)%7;
$cale_m=int(($cale_a+11*$cale_h+22*$cale_l)/451);
$ret_m=int(($cale_h+$cale_l-7*$cale_m+114)/31);
$ret_d=(($cale_h+$cale_l-7*$cale_m+114)%31)+1;
return sprintf("%02d%02d",$ret_m,$ret_d);
}