java中的高效幂指数方法(JDK 1.7)

时间:2012-10-16 16:39:31

标签: java algorithm

我想在我的项目所需的java中为power(base,exponent)创建一个最佳方法,其中base和exponent的类型都是int,而exponent< = 10 ^ 9.但是这必须要做在java中?我知道可以使用bitshift,但它本身涉及在java中使用bitset.Kindly建议实现

2 个答案:

答案 0 :(得分:0)

只需使用java.lang.BigInteger课程即可。它有一个pow()方法,可以以相当有效的方式完成您想要的操作。

答案 1 :(得分:-1)

由于指数是int,你已经有了数字的二进制表示(计算机也是如此)。所以你应该有三个整数,基数,指数和一个用于计算的临时整数,还有一个用于求解。你从这开始:

unsigned int base;//you manage input for this and exponent like you wish, probably passed in as parameters
unsigned int exponent;
unsigned int temp = base;
unsigned int answer = 1;
while (exponent!=0){
    if (exponent%2 == 1){
        answer *= temp;
    }
    exponent>>1;
        temp<<1;
}

请尝试此算法,让我知道它是如何工作的。 while外观以指数的最大位长度运行(即32次)。此代码不处理大数字或负数,但我不确定您是否需要这个。