找到正整数幂的最快算法是什么?

时间:2011-04-24 23:35:24

标签: algorithm numbers

  

可能重复:
  The most efficient way to implement an integer based power function pow(int, int)

我知道的唯一两种方法是,

  1. 单个for循环:非常慢

  2. 重写enter image description here递归计算。

  3. 我想知道有比这两个算法更快的算法吗?任何按位技术都是受欢迎的。谢谢。

    两种算法的C#演示:

         class Math {
            static public Int64 recurPow( Int64 a, Int64 e ) {
                if ( e == 0 )
                    return 1;
                if ( e == 1 )
                    return a;
                if ( ( e % 2 ) == 0 )
                    return recurPow( a * a, e / 2 );
                else
                    return recurPow( a * a, ( e - 1 ) / 2 );
            }
    
            static public Int64 iterPow( Int64 a, Int64 e ) {
                Int64 result = a;
                for ( Int64 i = 1; i < e; ++i )
                    result *= a;
                return result;
            }
        }
    

1 个答案:

答案 0 :(得分:2)

最佳算法是NP-complete,请参阅http://en.wikipedia.org/wiki/Addition-chain_exponentiation

该页面还链接到许多启发式算法,这些算法可以提供相当好的答案,您可能需要其中一个。

你也在做comp3212吗?