Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.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 具有8位数字的模幂运算_Java_Exponentiation_Modular Arithmetic - Fatal编程技术网

Java 具有8位数字的模幂运算

Java 具有8位数字的模幂运算,java,exponentiation,modular-arithmetic,Java,Exponentiation,Modular Arithmetic,当指数的基数为8位或更大时,用于查找将一个大数字提升为模的幂的结果的Java程序似乎不起作用 具有8位或更多位数的基数不起作用(根据在线模幂计算器进行检查) publicstaticintmodexp(intb,inte,intm){ 系统输出打印ln(b); int c=1; int e2=0; 当(e2b*c在某些情况下溢出时-例如,当b为11111111时,超过193的任何c值都会溢出。或者从一开始就减少b模m(这样你就不会处理大的数字),或者使用long而不是int来获得中间结果。这是有

当指数的基数为8位或更大时,用于查找将一个大数字提升为模的幂的结果的Java程序似乎不起作用

具有8位或更多位数的基数不起作用(根据在线模幂计算器进行检查)

publicstaticintmodexp(intb,inte,intm){
系统输出打印ln(b);
int c=1;
int e2=0;

当(e2
b*c
在某些情况下溢出时-例如,当
b
为11111111时,超过193的任何
c
值都会溢出。或者从一开始就减少
b
m
(这样你就不会处理大的数字),或者使用
long
而不是
int
来获得中间结果。这是有意义的。谢谢!首先减少模
m
并不是永久的解决方案,因为
m
本身可能有8位数字,允许
b
c
也有8位数字,然后它们的乘积将有大约16位不适合。使用
long
很好。
b*c
在某些情况下会溢出-例如,当
b
为11111111时,超过193的任何
c
值都会溢出。或者从一开始就减少
b
m
(这样你就不会处理大数字),或者使用
long
而不是
int
来获得中间结果。这是有意义的。谢谢!首先减少模
m
并不是永久的解决方案,因为
m
本身可能有8位数字,允许
b
c
也有8位数字,然后它们的乘积将有大约16位不适合。使用
long
可以。
public static int modExp(int b, int e, int m){
    System.out.println(b);
    int c = 1;
    int e2 = 0;
    while(e2<e){
        e2++;
        c = (b*c)%m;
    }
    if(c<0){
        c += m;
    }
    return c;
}