Один известный современный математик, Джон Конвей, придумал довольно простой алгоритм вычисления дня недели в уме. На входе дата, на выходе - день недели. Говорят, что сам математик вычисляет день недели в течение двух секунд!
Алгоритм вычисления дня недели
Каждому году приписывается т.н. роковой день недели. В 2010 году роковой день - воскресенье, в 2011 - понедельник, в 2012 - должен был бы быть вторник, но т.к. год високосный, то еще +1, т.е. среда.
Далее, в любом году роковой день выпадает: (день/месяц)
4/4, 6/6, 8/8, 10/10, 12/12, т.е. 4 апреля, 6 июня, 8 августа и т.д.
5/9 и 9/5
7/11 и 11/7
3 января (4го в високосный)
последний день февраля
"нулевое" марта (что то же самое, что последний день февраля)
Например, мы хотим вычислить, на какой день недели приходится 23 февраля 2011 года.
В 2011 году роковой день - понедельник.
Вспоминаем ближайший к дате роковой день: последний день февраля => 28 февраля.
Значит, 28 февраля - это понедельник. Семь дней назад тоже понедельник => 21 февраля - понедельник.
23 февраля - это второй день после 21 февраля.
Следовательно, 23 февраля - среда.