算法寻找功率,即n^p

Algo for finding power i.e. n^p

本文关键字:寻找 功率 算法      更新时间:2023-10-16

用于查找 n^p 的算法是:

unsigned long long power(unsigned n, unsigned p)
{
    unsigned long long x=1, y=n;
    while(p > 0)
    {
        if(p&1) x *= y;
        y *= y;
        p >>= 1;
    }
    return x;
}

有人可以解释该算法背后的逻辑/数学。我知道它有效并在一些测试用例(干式运行)中进行了工作。我的意思是它是如何工作的,以及从一般天真的方法中如何有效的。

这是Squaring :>>= 1是编写/= 2的方式。

其背后的想法是,如果p甚至是,您可以服用n^(p/2)并与之保持平方。当p奇数时,p-1必须是均匀的,因此您可以将n^((p-1)/2)进行平衡,然后将结果乘以n,以补偿您从p减去的1