算法学习-求整数m的n次方,时间复杂度为:logn

整数N次方

假设一个整数是10,如何最快地求解10的75次方。
1. 75的二进制数形式为1001011
2. 10的75次方=10^64 × 10^8 × 10^2 × 10^1

在这个过程中,我们先求出10^1,然后根据10^2,再根据10^2求出10^4,……,最后根据10^32求出10^64,即75的二进制数形式总共为多少位,我们就要在原基础上平方几次。

  1. 在步骤2进行的过程中,只有遇到位为1时,才将结果累乘当前的平方数。比如,10^64、10^8、10^2、10^1应该累乘。
public int calculate(int m,int n){
      
     //8    1000
     int pfs=m;
     int result=1;
      for(n!=0){
        if((n&1)==1){
          result=result*m;
         }
        m=m*m
        n=n>>1;
      }
      
     return result;

}

 

你可能感兴趣的:(算法学习-求整数m的n次方,时间复杂度为:logn)