Calculating the Date of Easter
The tables which appear here and, in more detail, in the Book of
Common Prayer can be used to determine the date of Easter.
Underlying these tables is a relatively simple algorithm which is
described here. This description assumes a limited mathematical
knowledge, particularly of integer division and remainders, or
modulo arithmetic. The algorithm applies to
any year since the introduction of the Gregorian Calendar, which in
Britain was in September 1752.
We refer to the year number as y, and use it to calculate
the Golden number, g:
g = y mod 19 + 1
Next we calculate the date of the Paschal full moon, that is, the full
moon which Easter is the Sunday after. This is done in several
stages. First we calculate two values called the solar correction,
s, and the lunar correction, l.
s = (y  1600) div 100 
(y  1600) div 400
l = (((y  1400) div 100) × 8) div 25
Next we calculate an uncorrected date for the Paschal full moon,
p'; then we apply a minor correction to get the exact date,
p, as the number of days after 21st March.
p' = (3  11g + s  l) mod 30
if (p' == 29) or (p' == 28 and g > 11) then
p = p'  1
else
p = p'
Now we need to determine the date of the following Sunday. First we
calculate the 'Dominical number', d:
d = (y + (y div 4)  (y
div 100) + (y div 400)) mod 7
Note that this is the number from which the Dominical letter is
determined, and we calculate d', which is the date on which the
first Sunday of the year falls:
d' = (8  d) mod 7
We already have p, the date of the Paschal full moon in days
after 21st March. Next we determine p'' the first date in the
year which falls on the same day of the week as the Paschal full moon.
First we determine the 'day number' of p with respect to 1st
January. This is 31 + 28 + 21 + p = 80 + p. (Note that
we can disregard possible occurences of 29th February, because the
calculation of d has already taken this into account, and we
shall see that these two values will cancel each other out.)
p'' is then given by the formula:
p''  = (80 + p) mod 7

 = (3 + p) mod 7

The difference between d' (the first Sunday in the year) and
p'' (the day of the week when the Paschal full moon falls)
gives us the number of days that must be added to p to get the
date of the following Sunday, which is Easter Day. There is one
further subtlety. This number must lie in the range 17, rather than
06, since Easter is not allowed to fall on the same day as the
Paschal full moon. We first determine x', the difference
between d' and p'':
x'  = d'  p''

 = (8  d) mod 7  (3 + p) mod 7

 = (8  d  (3 + p)) mod 7

 = (5  d  p)) mod 7

To force this to lie in the range 17, we calculate x
x  = (x'  1) mod 7 + 1

 = (4  d  p)) mod 7 + 1

We can now calculate e, the number of days Easter
falls after 21st March:
e = p + x
or
e = p + 1 + (4  d  p) mod 7
In other words Easter Day is:
if e < 11 then
(e + 21) March
else
(e  10) April
This code is implemented as an online Easter date calculator at:
http://www.ely.anglican.org/cgibin/easter
together with a corresponding C code fragment at
http://www.ely.anglican.org/etc/easter2.c
which implements the appropriate algorithm for the Julian as well as
the Gregorian Calendar.
title page 
Introduction