整数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的二进制数形式总共为多少位,我们就要在原基础上平方几次。
- 在步骤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;
}