Modulo / Pow berechnen

Tiny9014

Mitglied
Hallo, folgendes Problem. Habe einen Code um Modulo zu berechnen, der fehlerhaft ist. Kann mir jemand helfen, die Fehler zu beheben. Folgendes Beispiel funktioniert: 3^4mod5. Allerdings funktionert 17^23mod13 nicht. Woran liegt es?
Code:
public class Pow {
    public static void main(String[] args) {
        int x = Integer.parseInt(args[0]);
        int k = Integer.parseInt(args[1]);
        int n = Integer.parseInt(args[2]);
      
        System.out.print(x+"pow"+k+" mod "+n+" = ");
        System.out.print(pow(x,k,n));
      
    }
    static int pow( int x, int k, int n) {
        int ergebnis = 1;
        for (int i=1; i<=k; i++){
            ergebnis = ergebnis*x;
        }
        ergebnis = ergebnis%n;
        return ergebnis;
    }
}
 
17^23 ergibt 2 * 10^28. Die höchste Zahl, die als Integer gespeichert werden kann ist aber ca. 2 * 10^9.
Dein Programm wird deshalb falsche Werte ausgeben.
 

Zurück
Oben