Calculate the date of Easter Your function or program should take a year as input and return (or print) the date (in the Gregorian calendar) of that years Easter (not the Eastern Orthodox Easter). The date returned should be formatted according to ISO 8601, but with support for years greater than 9999 (such as 312013-04-05 or 20010130), and it only needs to work with years greater than or equal to 1583 (the year of the adoption of the Gregorian calendar), and years less than or equal to 5701583 (as that is when the sequence of Easter dates starts to repeat itself).

Examples:

e(5701583) = 5701583-04-10
e(2013)    = 2013-03-31
e(1583)    = 1583-04-10
e(3029)    = 30290322
e(1789)    = 17890412
e(1725)    = 17250401


The use of built-in functions for returning the date of easter is boring and therefore disallowed. Shortest answer (in characters) wins.

Resources:


http://en.wikipedia.org/wiki/Computus#Algorithms
http://web.archive.org/web/20150227133210/http://www.merlyn.demon.co.uk/estralgs.txt
Python 2 - 125 120 119 chars

This is Fors's answer shamelessly ported to Python.

y=input()
a=y/100*1483-y/400*2225+2613
b=(y%19*3510+a/25*319)/330%29
b=148-b-(y*5/4+a-b)%7
print(y*100+b/31)*100+b%31+1


Edit:  Changed last line from print"%d-0%d-%02d"%(y,b/31,b%31+1) to save 5 characters.  I would have loved to represent 10000 as 1e4, but that would produce floating point necessitating a call to int.

Edit2:
Thanks to Peter Taylor for showing how to get rid of that 10000 and save 1 character.