无法理解两个方程式之间的区别
Can't understand the difference between 2 equations
我是 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整除=闰
- 否则不是闰年
我不明白第二个代码示例背后的逻辑,对我来说,就好像:
- 如果年份能被4整除且不能被100整除=闰
- 或
- 仅当年份可被 400 整除 = 闰年(不包括其他条件)
- 否则不是闰年
有人可以解释为什么第二个代码示例也有效,以及它是如何解释的吗?
闰年的条件是年份能被4整除但不能被100整除,或者年份能被400整除。
从数学上讲,任何能被 400 整除的东西都能被 4 和 100 整除,这就是为什么闰年是 if (x % 4 AND NOT x % 100) OR (x % 400) 的原因。
你可以看到这样的因子分解:400 = 4 * 100,所以任何可以写成n * 400
的数字都可以写成n * 4 * 100
,所以你的条件只是多余的。
我是 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整除=闰
- 否则不是闰年
我不明白第二个代码示例背后的逻辑,对我来说,就好像:
- 如果年份能被4整除且不能被100整除=闰
- 或
- 仅当年份可被 400 整除 = 闰年(不包括其他条件)
- 否则不是闰年
有人可以解释为什么第二个代码示例也有效,以及它是如何解释的吗?
闰年的条件是年份能被4整除但不能被100整除,或者年份能被400整除。
从数学上讲,任何能被 400 整除的东西都能被 4 和 100 整除,这就是为什么闰年是 if (x % 4 AND NOT x % 100) OR (x % 400) 的原因。
你可以看到这样的因子分解:400 = 4 * 100,所以任何可以写成n * 400
的数字都可以写成n * 4 * 100
,所以你的条件只是多余的。