algorithm - 检查一个整数是否是另一个整数的幂

标签 algorithm math

这是一个 interview question :“给定 2 个整数 x 和 y,检查 x 是否是 y 的整数次方”(例如,对于 x = 8 和 y = 2,答案是“真”,对于 x = 10 和 y = 2,答案是“假”)。

显而易见的解决方案是:

int n = y; while(n < x) n *= y; return n == x

现在我正在考虑如何改进它。

当然,我可以检查一些特殊情况:例如两者 xy应该是奇数或偶数,即我们可以检查 x 的最低有效位和 y .但是我想知道我是否可以改进核心算法本身。

最佳答案

您最好将 y 重复划分为 x。第一次得到非零余数时,您知道 x 不是 y 的整数次幂。

while (x%y == 0)  x = x / y
return x == 1

这会处理第一次迭代中的奇数/偶数点。

关于algorithm - 检查一个整数是否是另一个整数的幂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4429044/

相关文章:

Java优化的Cramers规则函数

algorithm - 树的每对顶点之间的最大流量之和

c - 计算矩阵的 c 次方

Linux、改进的cal、shell编程

c++ 或 c pow 给出错误的结果

java - 将公式转换为 Java

algorithm - 多项目有界背包算法

algorithm - 如何找到依赖树中的哪些作业可以并行运行?

c# - 在小于N的素数中,求2基系中对应的数中含有最多1-s的数

python - 在 python 中计算体积或表面积的好算法