这是一个采访问题:“给定2个整数x和y,检查x是否为y的整数次幂”(例如,对于x = 8和y = 2,答案为“真”,对于x = 10和y = 2 “假”)。
显而易见的解决方案是:
int n = y; while(n < x) n *= y; return n == x
现在我正在考虑如何改进它。
当然,我可以检查一些特殊情况:比如他们x和y应该是奇数或偶数,也就是说,我们可以检查的至少显著位x和y。但是我不知道我是否可以改善核心算法本身。
x
y
您最好将y重复除以x。第一次获得非零余数时,您知道x不是y的整数次幂。
while (x%y == 0) x = x / y return x == 1
这将处理您在第一次迭代中的奇/偶数点。