给出一个数字x
(如13)和一个因数N
(如2),我如何计算下面的值8和16?
8 <= 13 < 16
换句话说,我如何在这里计算相等的两端:
N^? <= x < N^(? + 1)
答案 0 :(得分:1)
您可以取数字的底数n 对数,并将其用作获取f
和f
加1的幂的值。
function getInterval(x, n) {
var f = Math.floor(Math.log(x) / Math.log(n));
return [Math.pow(n, f), Math.pow(n, f + 1)];
}
console.log(getInterval(3, 2).join(' '));
console.log(getInterval(23, 7).join(' '));
console.log(getInterval(13, 2).join(' '));
答案 1 :(得分:1)
编辑。问题感已完全改变。
pwr = Math.floor(Math.log(x) / Math.log(n))
low = Math.pow(n, pwr)
high = Math.pow(n, pwr + 1)