算法:k和n之间的关系是什么?

时间:2013-02-20 14:21:35

标签: algorithm

计算a ^ n的值:

方法1:

  result = 1;
  for(int i = 1; i <=n; i++)
      result *= a;

如果使用method2改进:

result = a;
for(int i = 1; i <=k; i++)
    result = result * result;

如何推断出k和n之间的关系?为什么? 谢谢!

3 个答案:

答案 0 :(得分:1)

我猜你正在尝试exponentiation by squaring

显然,对于2的幂,k = log_2 n。

答案 1 :(得分:0)

在第一种情况下结果= a ^ n,在第二种情况下结果= a ^(2 ^ k),因此2 ^ k = n且k = logn。当然,这只适用于n为2的幂。

答案 2 :(得分:0)

我认为 在第一种情况下,a,a ^ 2,a ^ 3..a ^ n 在第二种情况下,它是^ 2,a ^ 4,A ^ 8 ...... A ^(2 ^ k)