素材牛VIP会员
判断闰年的逻辑?
 qi***hu  分类:Python  人气:884  回帖:2  发布于6年前 收藏

下面的算法:
function isLeapYear(year) {
return !(year & 3 || year & 15 && !(year % 25));
}
所以,这个逻辑是怎么样的?
这事我看一段老代码看到的,实在不理解其中的思路,请指教。

 标签:cc++python

讨论这个帖子(2)垃圾回帖将一律封号处理……

Lv3 码奴
xi***xu 职业无 6年前#1
// https://en.wikipedia.org/wiki/Leap_year#Algorithm
253 bool leapyear(int y)
254 {
255     if (y % 4 != 0)
256         return false;
257     else if (y % 100 != 0)
258         return true;
259     else if (y % 400 != 0)
260         return false;
261     return true;
262 }
Lv3 码奴
上***水 职业无 6年前#2

能被4整除但不能被100整除,或能被400整除的年份即为闰年
这是普通写法:

(year % 4 == 0 && year % 100 != 0) || year % 400 ==0

而year & 3和year % 4一致, year & 15与year % 16一致

如果年份不均匀地除以4,或者如果它不均匀分布,则不是16,但是除以25均匀。这意味着25的每个倍数不是闰年,除非它也是16的倍数。由于16和25没有任何公共因子,所以满足两个条件的唯一时间是当年是16 * 25或400年的倍数

 文明上网,理性发言!   😉 阿里云幸运券,戳我领取