Algorithm 计算一个比O(m)快的数的幂

Algorithm 计算一个比O(m)快的数的幂,algorithm,Algorithm,我如何用更少的乘法计算一个数的幂,比如说n^m?暴力是这个问题的唯一解决办法吗?我想将复杂性从O(m)至少降低到对数 编辑: 我发现有一个递归的解决方案,从一个更大的幂(比如8),你可以使用已经计算过的幂来求和我的幂(对于8,我可以使用4和4,其中n^4已经计算过一次)。快速求幂是x^(2n)=(x^n)^2,x^(2n+1)=(x^n)^2.x,这导致对数复杂性(在每一步中,将指数除以2)。使用对数。2^5=反对数(5*log(2)).2^5=2@JorgeY。这更简单:1@FeiXiang当

我如何用更少的乘法计算一个数的幂,比如说n^m?暴力是这个问题的唯一解决办法吗?我想将复杂性从O(m)至少降低到对数

编辑:
我发现有一个递归的解决方案,从一个更大的幂(比如8),你可以使用已经计算过的幂来求和我的幂(对于8,我可以使用4和4,其中n^4已经计算过一次)。

快速求幂是x^(2n)=(x^n)^2,x^(2n+1)=(x^n)^2.x,这导致对数复杂性(在每一步中,将指数除以2)。

使用对数。2^5=反对数(5*log(2)).2^5=2@JorgeY。这更简单:
1@FeiXiang当然可以,但我想让2和5出现在第二个表达式中,这样提问的用户就可以看到这两个表达式是如何关联的。无论如何,这是一个棘手的建议,因为它只在你有幂o 2的情况下起作用,而对5^3不起作用。