Не могу понять разницу между 2 уравнениями - PullRequest
0 голосов
/ 27 апреля 2020

Я новичок в Javascript и пытаюсь найти наилучшее из возможных уравнений для калькулятора високосного года. Я написал решение так:

if ((year % 4 ===0 && year % 100 !==0) || (year % 4 ===0 && year % 100 ===0 && year % 400 ===0)) {
  alert("Leap");
} else {
  alert("Not Leap");
}

После этого я погуглил другие способы и обнаружил, что это можно написать так:

if ((year % 4 === 0 && year % 100 !== 0) || (year % 400 ===0)) {
  alert("Leap");
} else {
  alert("Not Leap");
}

Но я не понять, как это можно написать так, потому что зная условия для високосных лет:

  • Если год делится на 4 и не делится на 100 = Скачок
  • Если год делится на 4 и делится на 100 и делится на 400 = скачок
  • В противном случае это не високосный год.

Я не понимаю логики c, стоящие за вторым примером кода, для меня это выглядит так:

  • Если год делится на 4 и не делится на 100 = Скачок
  • ИЛИ
  • Только, если год делится на 400 = скачок (без учета других условий)
  • В противном случае это не високосный год

Может кто-нибудь объяснить, почему второй пример кода также действителен и как он интерпретируется?

1 Ответ

1 голос
/ 27 апреля 2020

Условием для високосного года является то, что год делится на 4, а не на 100, или год делится на 400.

Математически все, что делится на 400, делится на 4 и на 100, это является причиной, по которой високосный год имеет место, если (x% 4 И НЕ x% 100) ИЛИ (x% 400).

Вы можете видеть это следующим образом: 400 = 4 * 100, поэтому любое число это может быть записано как n * 400 может быть записано как n * 4 * 100, поэтому ваше состояние просто избыточно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...