Ich habe nur eine kleine Frage: Warum bekomme ich das Ergebnis von 25, wenn ich 13^30 mod 31 in Java berechne? Das Ergebnis sollte 1 sein. Thx für die Antwort im Voraus. p.s. Ich schrieb den Code auf https://www.compilejava.net/Pow() Funktion mit den Parametern 13 und 30 fehlgeschlagen
import java.lang.Math;
public class HelloWorld
{
public static void main(String[] args)
{
System.out.println(calculateModulo());
}
public static String calculateModulo(){
String res = new String();
for (int i = 1; i < 31; i++){
for (int j = 1; j < 31; j++){
double var = Math.pow((double)i, (double)j);
if (j == 30) {
System.out.println("adding: "+i);
res = res + " " + i;
}
if (var % 31 == 1) {
System.out.println("The number " + i +" to the power of "+j +" modulo 31 results in "+var % 31);
break;
}
}
}
System.out.println(Math.pow(13,30)+" "+(Math.pow(13,30)%31)); // why is the output of this "2.619995643649945E33 25.0"
return res;
}
}
Die Nummer ist zu groß, um genau intern gespeichert zu werden. Was Sie bekommen, ist hier ein rundes Ergebnis. Sie können Ihr Glück mit der 'BigInteger'-Klasse versuchen oder eine intelligentere Methode entwickeln, um den Modul dieser Zahl zu berechnen. – Sirko
Vielleicht @ @ Jon Skeet post https://stackoverflow.com/questions/11317875/finding-really-big-power-of-a-number. Wenn alles andere fehlschlägt, eine einfache Funktion wie pow zu erstellen, die mit großen Zahlen arbeitet, wie Sie möchten, könnte eine Idee sein. – SimperT