Calculating the Date of Easter
The God Plays Dice blog has an entertaining post on how the date of Easter is calculated. Wikipedia has all the messy details of course, but the blog makes a good introduction to the topic. "Easter is the date of the first Sunday after the first full moon on or after March 21... [T]he cycle of Easter dates repeat themselves every 5,700,000 years. The cycle of epacts (which encode the date of the full moon) in the Julian calendar repeat every nineteen years. There are two corrections made to the epact, each of which depend[s] only on the century; one repeats (modulo 30, which is what matters) every 120 centuries, the other every 375 centuries, so the [p]air of them repeat every 300,000 years. The days of the week are on a 400-year cycle, which doesn't matter because that's a factor of 300,000. So the Easter cycle has length the least common multiple of 19 and 300,000, which is 5,700,000 [years]."
sub GetEasterDate {
my($year)=@_;
# http://www.smart.net/~mmontes/nature1876.html
my $a=$year%19;
my $b=int($year/100);
my $c=$year%100;
my $d=int($b/4);
my $e=$b%4;
my $f=int(($b+8)/25);
my $g=int(($b-$f+1)/3);
my $h=(19*$a+$b-$d-$g+15)%30;
my $i=int($c/4);
my $k=$c%4;
my $l=(32+2*$e+2*$i-$h-$k)%7;
my $m=int(($a+11*$h+22*$l)/451);
my $month=int(($h+$l-7*$m+114)/31);
my $p=($h+$l-7*$m+114)%31;
my $day=$p+1;
return (0,0,0,$day,$month-1,$year-1900);
};
$x='S24;r)>63/* h@<5+oZ)32"5cz';$me='phroggy'x$];
$x=~y+ -xz+\0-Tx+;print$_^chop$me for split'',$x;
Absolutely - the Anglo-Saxons had a lot to say about the dating of Easter. See http://faculty.virginia.edu/OldEnglish/aelfric/detemp.html for an original text on the subject if you're wildly interested. Melvyn Bragg's novel "Credo" dramatises the Synod of Whitby and gives a sense of exactly how serious an issue this was for people. Since Easter is the major Christian feast, it was a matter of orthodoxy to date it correctly. Interesting to think that being bad at math could make you a heretic!
A closed mouth gathers no foot.