Simple test to see if year is a leap year

  • Thread starter Thread starter moonman239
  • Start date Start date
  • Tags Tags
    Test Year
AI Thread Summary
The discussion centers around determining leap years, with one participant proposing that all leap years are multiples of 16, which is quickly challenged by others. The correct rule states that a year is a leap year if it is divisible by 4, unless it is also divisible by 100, in which case it must be divisible by 400 to be a leap year. Participants clarify that the proposed method is incorrect, as it fails to account for years like 2004 and 2008, which are leap years but not multiples of 16. The conversation also touches on the mathematical logic behind leap year calculations, emphasizing the need for three modulus checks. Ultimately, the leap year determination involves a more complex set of conditions than simply checking for divisibility by 16.
moonman239
Messages
276
Reaction score
0
I just stumbled across this on my own. I find that all leap years in the current calendar are multiples of 16. Therefore, to see if a year is a leap year, one need only to divide the year by 16 and see if there is a remainder. If so, the year is not a leap year. If not, the year is a leap year. Note that this only works for dates in the Gregorian calendar, which was created in 1582 AD but was not universally adopted for a few years. So you'll need to know when the country of interest adopted the Gregorian calendar.
 
Mathematics news on Phys.org
I don't think this is correct. Any year divisible by 4 is a leap year unless it is divisible by 100. For example 2004 and 2008 were leap years and neither one is divisible by 16.
 
I don't follow your logic. 2012 is a leap year. I get 125.75 when I divide 2012 by 16.
 
Iirc a year is leap if it is divisible by four, unless it ends in two zeros then it must be divisible by sixteen.
 
phyzguy said:
Any year divisible by 4 is a leap year unless it is divisible by 100.
Almost. Years that are divisible by 400 are also leap years. One way to write this:
(N = 0\mod 4) \wedge ((N \ne 0 \mod 100) \vee (N = 0 \mod 400))

The test for whether a year is a leap year can be written in a number of ways, but it will always involve three modulus calculations. For example, this also works:
(N = 0\mod 16) \vee ((N = 0 \mod 4) \wedge (N \ne 0 \mod 25))
 
I thought this pseudocode from wikipedia was useful.

if year modulo 400 is 0 then
is_leap_year
else if year modulo 100 is 0 then
not_leap_year
else if year modulo 4 is 0 then
is_leap_year
else
not_leap_year

It helps to see how 2000 was a leap year but 1900 was not.
 
Ynaught? said:
I don't follow your logic. 2012 is a leap year. I get 125.75 when I divide 2012 by 16.

Got it. But the remainder is 3/4.

Updated: If there is a remainder, and its denominator is 4, then the year is a leap year.
 
moonman239 said:
Got it. But the remainder is 3/4.

Updated: If there is a remainder, and its denominator is 4, then the year is a leap year.
No! That would make 1900 a leap year, which it wasn't. It's a three-way test. See posts #5 and 6.
 
An interesting consequence of the leap year rules is that the 13th of the month falls on a Friday more often than 1/7.
 
  • #10
Ynaught? said:
I get 125.75 when I divide 2012 by 16.

moonman239 said:
Got it. But the remainder is 3/4.

I thought the remainder upon dividing 2012 by 16 is 12, not 3/4. :confused:
 
Back
Top