我正在使用谷歌应用程序脚本,它与javascript一起工作,我正在编写一段代码,它返回两个除以数字的最高功率,但它不起作用。为什么?
function HP2(input) {
var i = 1;
while(input % 2^i = 0){
i++;
};
return 2^i;
}
谢谢!
答案 0 :(得分:1)
您需要在==
条件和while
函数中使用Math.pow
而不是xor运算符^
。返回值应为i-1
。
function HP2(input) {
var i = 1;
while(input % Math.pow(2, i) == 0) {
i++;
};
return Math.pow(2, i-1);
}
答案 1 :(得分:0)
如果你保持在32位范围内(至少对于除数),这将是更高效的方式:
function HP2(input){
for(var i=0; i<31 && !(input & (1<<i)); ++i);
return (1<<i)>>>0;
}