This article is from the Calendars FAQ, by Claus Tondering claus@tondering.dk with numerous contributions by others.
This is an attempt to boil down the information given in the previous
sections (the divisions are integer divisions, in which remainders are
discarded):
G = year mod 19
For the Julian calendar:
I = (19*G + 15) mod 30
J = (year + year/4 + I) mod 7
For the Gregorian calendar:
C = year/100
H = (C - C/4 - (8*C+13)/25 + 19*G + 15) mod 30
I = H - (H/28)*(1 - (29/(H + 1))*((21 - G)/11))
J = (year + year/4 + I + 2 - C + C/4) mod 7
Thereafter, for both calendars:
L = I - J
EasterMonth = 3 + (L + 40)/44
EasterDay = L + 28 - 31*(EasterMonth/4)
This algorithm is based in part on the algorithm of Oudin (1940) as
quoted in "Explanatory Supplement to the Astronomical Almanac",
P. Kenneth Seidelmann, editor.
People who want to dig into the workings of this algorithm, may be
interested to know that
G is the Golden Number-1
H is 23-Epact (modulo 30)
I is the number of days from 21 March to the Paschal full moon
J is the weekday for the Paschal full moon (0=Sunday, 1=Monday,
etc.)
L is the number of days from 21 March to the Sunday on or before
the Paschal full moon (a number between -6 and 28)
 
Continue to: