Middle Square

Hallo,

ich hab ein kleines Problem bei einer Aufgabe, die wir für die Uni machen sollen. Das Thema gibt es hier auch schon, nur leier bin ich aus den Antworten nicht schlau geworden...
WIr sollen eine Applikation programmieren, die einen Middle Square Generator für zweistellige Zahlen realisiert.
Bei meinem Programm bekomme ich zwar Zahlen raus, nur leider die falschen.
Sieht von euch vielleicht jemand meinen Fehler?
Java:
public class MiddleSquare {
        public static void main(String[] args) {

        int a = StdIn.readInt();

        if (a>0 && a<100) {

                for ( int i=0; i <= 101; i++) {
                System.out.println(a);  // Ausgeben für jeden Schleifendurchlauf
                a = a*a;  // Quadrieren
                a = a/10;
                a = a&100;

                }
        }
        else {
         System.out.println("zurückgewiesene Zahl");
        }
        }
}
 
Zuletzt bearbeitet von einem Moderator:

Blut1Bart

Mitglied
Ich wäre diese Aufgabe so angegangen, da ist allerdings ein Fehler drin, denn die Schleife hält nicht immer an :(

Java:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class MS {
    public static long[] mittquadratmethode(long seed) {
        List<Long> quadrate = new ArrayList<>();
        while (seed != 0) {
            long q = seed * seed;
            q = (q % (long) Math.pow(10, (int) Math.log10(q))) / 10;
            quadrate.add(q);
            seed = q;
        }
        return quadrate.stream().mapToLong(Long::longValue).toArray();
    }

    public static void main(String[] args) {
        System.out.println(Arrays.toString(mittquadratmethode(96)));
    }
}

Weiß jemand, wieso?
 

mihe7

Top Contributor
Du entfernst die erste Stelle und teilst dann durch 10. Das liefert bei 4-stelligen Quadratzahlen das korrekte Ergebnis, sonst nicht.

Beispiel:
Vierstellige Quadratzahl:
Richtig: 35*35 = 1225 => mittlere Zahlen sind 22
Richtig: 1225 => erste Stelle entfernen => 225 => durch 10 => 22

Dreistellige Quadratzahl:
Richtiig: 21 * 21 = 441 = 0441 => mittlere Zahlen sind 44
Falsch: 441 => erste Stelle entfernen => 41 => durch 10 => 4
 

Ähnliche Java Themen


Oben