如何检查数字是否为5的幂

时间:2014-11-11 10:28:36

标签: algorithm math numbers

如何检查数字是否为5的幂?

我可以想到以下算法。有没有办法改善它?任何数学技巧?

  1. 首先检查最后一位是否为5。
  2. 如果最后一位数是5;除以5 如果除法结果为1,则数字为5的幂 否则,检查除法结果本身是否为5的幂(即转到步骤1,结果为数字)。

4 个答案:

答案 0 :(得分:9)

您不需要查看个别数字,您可以这样做:

n = (int)(log(x) / log(5)); // get n = log5(x), truncated to integer
if (pow(5, n) == x)         // test to see whether x == 5^n
    // x is a power of 5

LIVE DEMO

答案 1 :(得分:4)

只有很少的五个幂适合int / long范围,所以你只需要生成所有这些并逐个检查(少于60个数字),使用HashSet将具有O(1)时间复杂度

答案 2 :(得分:2)

连续划分,直到你达到不分5的数字并检查结果是否等于1,不是解决方案。需要log_5(n)操作,所以它是O(lg n),这是非常好的时间。对于9094947017729282379150390625,它只有40次操作!

答案 3 :(得分:-1)

我要做的是首先创建一个5的幂数组。您可以使用范围,然后说,对于范围中的每个值,将该值取为第五个幂,并推送新值进入阵列。

然后,您将找到n,您要查找的数字是否包含在数组中。