幂函数O(logN)实现

| 分类 算法  | 标签 算法  logN  浏览次数: -

幂函数O(logN)实现

假设一个整数是X,如何最快的求解X的Y次方。(以下X=10,Y=75为例)

1.75的二进制为1001011

2.10^75=10^64 * 10^8 * 10^2 * 10^1 (先计算10的1次方,再根据10的1次方计算10的平方,再根据10的2次方计算10的四次方,……,再根据10的32次方计算出10的64次方。即75的二进制有多少位我们就用了多少次乘法)。

3.把步骤2中应该乘的项累乘起来即可。(64、8、2、1,对应75二进制中的1,应该累乘。32、16、4,对应75二进制中的0,不用累乘)。

//C语言实现
#include<stdio.h>
int main()
{
    int X,Y,power=1;
    printf("计算X的Y次幂\n");
    scanf("%d,%d",&X,&Y);
    for(;Y!=0;X=X*X,Y=Y>>1)
    {
        if((Y&1)!=0)//Y&1!=0代表Y的二进制中为的1的时候
        power=power*X;
    }
    printf("计算结果为:%d",power);
    return 0;
}

上一篇 数据校验     下一篇 shutil文件操作
目录导航