我在网络上发现的一个问题,希望社会上有谁能详细解释一半。这个问题是这样的
给定一个N个整数,正,如果能画成两个或两个以上的连续整数之和,返回true(10=1+2+3+4),如果不能,返回false。
而这是我找到的答案
const consecutiveIntegers = (num) => !Number.isInteger( Math.log2(num));
我以前从来没有来过Ln或Le是什么意思,所以经过研究我明白了,如果一个数可以拆成Log2(8=3因此8=2*2*2)就不能按照要求来表达(没有连号)。但我不明白为什么 "这个数字不是整数" (boolean)的东西。不应该检查相反的吗?Number一直真正是一个Integer?请记住,我是在尝试理解答案,而不是试图改进它或使它更加花哨。 先谢谢你的时间和耐心。 将答案完全归功于GIDEO。
这样的一个数叫做 客套话. 众所周知,无礼数正好是2的幂。
现在,一个数字 n
是2的幂,如果且仅如果 log2(n)
是一个整数,因为 log2(2^k) = k
.