任何人都知道如何在 java 中实现这样的问题?
“实现一个子程序,它采用三个正整数参数 (a;b;n) 并返回 ((a 的 b 次幂) mod n) 的值,其中参数由大约 100 个十进制数字表示。使用四种不同的方法。”
提前致谢
UPD:方法如下
M1)
public BigInteger Result1(BigInteger a , BigInteger b , BigInteger n){
BigInteger Res = new BigInteger("1");
for (BigInteger i = new BigInteger("0"); !i.equals(b); i = i.add(new BigInteger("1"))) {
Res = Res.multiply(a).mod(n);
}
return Res;
}
M2)
public BigInteger Result2(BigInteger a , BigInteger b , BigInteger n){
BigInteger Res = new BigInteger("1");
for (BigInteger i = new BigInteger("0"); !i.equals(b); i = i.add(new BigInteger("1"))) {
Res = Res.multiply(a);
}
return Res.mod(n);
}
M3)
ublic BigInteger Result3(BigInteger a , BigInteger b , BigInteger n){
if(b.equals(new BigInteger("0"))){
return new BigInteger("1");
}
else if(b.mod(new BigInteger("2")).equals(new BigInteger("0"))){
BigInteger Res = Result3(a,b.divide(new BigInteger("2")),n);
return (Res.multiply(Res)).mod(n);
}
else{
return ( (a.mod(n)).multiply(Result3(a, b.subtract(new BigInteger("1")), n)) ).mod(n);
}
}
M4)
public BigInteger Result4(BigInteger a , BigInteger b , BigInteger n){
BigInteger Res = new BigInteger("1");
while(!b.equals(new BigInteger("0"))) {
if(!(b.mod(new BigInteger("2"))).equals(new BigInteger("0"))) {
Res = Res.multiply(a).mod(n);
}
a = a.multiply(a).mod(n);
b = b.divide(new BigInteger("2"));
}
return Res;
}