I've been using an algorithm for a few years which works nicely within the limitations of microcontrollers and their ilk. I recently needed to dust it off for a port to the Arduino environment, and thought others may find it to be of use.
So I went the extra step to create a library, which can be downloaded from http://swfltek.com/arduino/sunrise.html
The download page gives all the details, but in a nutshell...
Create an instance of the Sunrise class, specifying the location and timezone...
Ask it to produce the time of sunrise or sunset, for a particular date.
Pretty simple to use, fairly accurate, and easy on the resources.