Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java(JDK1.7)中的有效幂指数法_Java_Algorithm - Fatal编程技术网

java(JDK1.7)中的有效幂指数法

java(JDK1.7)中的有效幂指数法,java,algorithm,Java,Algorithm,我想为我的项目所需的java中的power(base,exponent)创建一个最佳方法,其中base和exponent的类型都是int,exponent只需使用java.lang.BigInteger类。它有一种方法,可以以一种相当有效的方式精确地实现您想要的功能。因为指数是int,所以您已经有了数字的二进制表示(计算机也有)。所以应该有三个整数,基数、指数和一个临时整数,用于计算,还有一个用于求解。您可以从以下内容开始: unsigned int base;//you manage inpu

我想为我的项目所需的java中的power(base,exponent)创建一个最佳方法,其中base和exponent的类型都是int,exponent只需使用
java.lang.BigInteger
类。它有一种方法,可以以一种相当有效的方式精确地实现您想要的功能。

因为指数是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;
}
无符号整数基//您可以按照自己的意愿管理此和指数的输入,可能是作为参数传入的
无符号整数指数;
无符号int-temp=base;
无符号整数回答=1;
while(指数!=0){
如果(指数%2==1){
答案*=温度;
}
指数>>1;

temp您想如何处理溢出?优化将非常困难,但您可以非常轻松地执行
O(对数指数)
:-不考虑溢出,也就是说。@IVlad:注意解决方案是
O(对数指数)
整数运算,而不是
O(对数指数)
time/ops3^(10^9)将溢出任何本机整数类型。是否确实不需要值模化?因此需要快速模幂运算算法。例如:。实际上modpow()工作正常:)谢谢各位解决了问题:)