Copyright © University of Cambridge. All rights reserved.

'Happy birthDay' printed from https://nrich.maths.org/

Show menu

This solution is not 'complete', but does indicate why the formula works. It will make more sense if you test it out using a spreadsheet.

This tasks seems daunting at first but then you might realise that essentially the function is a 'counter' and the year starts at 1st March and ends on 28/9th of February.
 
Years are always of the same structure with the exception of the last day of Feb:
 
From  1st March to 1st April is +31 days. 
 
From 1st April to 1st May is +30 days.
 
From 1st May to 1st June is +31 days.
 
etc.
 
For weekday calculations we are only interested in mod 7 changes. Since 31 is 3 mod 7 and 30 is 2 mod 7 we have the following differences between the first of the months, with the +0/1 corresponding to February.
 
(1Mar) +3, +2, +3, +2, +3, +3, +2, +3, +2, +3, +3,+0/1 (1Mar)

 Accumulating the changes from the 1st March (mod 7) gives
 
(1Mar) 0
(1Apr) 3
(1May) 5
(1Jun) 1
(1Jul) 3
(1Aug) 6
(1Sep) 2
(1Oct) 4
(1Nov) 0
(1Dec) 2
(1Jan) 5
(1Feb) 1
(1Mar) 1 or 2 in a leap year
 
Interestingly, the $\mbox{int}\left[\frac{(m+1)\times 26}{10}\right]$ part matches these offsets with the labellings of months given  (try it out to see).
 
 
So, in the absence of leap years the expression would work.
 
The part $y+\mbox{int}\left[\frac{y}{4}\right]+\mbox{int}\left[\frac{C}{4}\right]-2C$ has the correct mod 7 behaviour to count the leap years (try it).