Ich möchte einen Rest einer vierten Potenz einer Zahl erhalten. Hier ist mein Code:Arbeiten mit BigInteger umgehen Integer.toString()
static int testMod(int a, int mod) {
/* //This looks clear
BigInteger a4 = a;
return (a4.pow(4))%mod;
*/
//This works
String a2String = Integer.toString(a);
String mod2String = Integer.toString(mod);
BigInteger a4 = new BigInteger(a2String);
BigInteger modBigInt = new BigInteger(mod2String);
a4 = a4.pow(4);
return a4.remainder(modBigInt).intValue();
}
Es funktioniert gut, aber die Umstellung auf String scheint überflüssig, und mit Hilfe der %
Betreiber wäre prägnanter als a.remainder(b)
. Ist es möglich, es umzuschreiben, um es klarer zu machen?
Sollte „vierte“ oder „4.“ Macht sein. – mbomb007
https://docs.oracle.com/javase/8/docs/api/java/math/BigInteger.html#valueOf-long- –
Da a4 größer als eine lange sein könnte, würden Sie möglicherweise die Präzision verlieren und das falsche zurückgeben antworte, wenn du a4 in ein int umwandelst, um die Modulo-Operation durchzuführen. – user3745362