这是一面试问题:“给定 2 个整数 x 和 y,检查 x 是否是 y 的整数次方”(例如,对于 x = 8 和 y = 2,答案为“true”,对于 x = 10 和 y = 2,答案为“假”)。
显而易见的解决方案是:
int n = y; while(n < x) n *= y; return n == x
现在我正在思考如何改进。
当然,我可以检查一些特殊情况:例如两个都x
and y
应该是奇数或偶数,即我们可以检查的最低有效位x
and y
。但是我想知道我是否可以改进核心算法本身。
你最好反复将 y 除以 x。第一次得到非零余数时,您就知道 x 不是 y 的整数次幂。
while (x%y == 0) x = x / y
return x == 1
这涉及第一次迭代时的奇数/偶数点。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)