Widerlegung der Eulerschen Vermutung Hilfe

1201smiley

Neues Mitglied
Laut einem Herrn Euler gibt es für alle n> 2 midestens n n-te Potenze um eine Summe zu erhalten, die selbst n-te Potenz ist. Für n = 5 wurde das dann widerlegt.
Das heißt es gibt: a^5+b^5+c^5+d^5 = e^5. Jetzt ist es die Aufgabe sich a, b, c, d, e mit einem Programm ausgeben zu lassen. Die Bedingungen sind:
1. Obergrenze für alle Zahlen ist 2oo.
2. Es gilt a<b<c<d<e.
3. Datentyp long soll für die Potenzen und Summen verwendet werden.
4. 5 ineinander geschachtelte Schleifen sollen benutz werden.
5. Ergebnis soll in wenigen Sekunden ausgegeben werden.

Mein Programm soweit:
Java:
public class Euler {
  public static void main(String[] args) {
    long a,b,c,d,e;
    a = 1;
    b = 1;
    c = 1;
    d = 1;
    e = 1;
    while (a*a*a*a*a+b*b*b*b*b+c*c*c*c*c+d*d*d*d*d != e*e*e*e*e){
        while (a<200){
            while(b<200 && a<b){
                while(c<200 && b<c){
                    while(d<200 && c<d){
                        while(e<200 && d<e){
                        e = e + 1;
                        }
                    d = d + 1;
                    }
                c = c + 1;
                }
            b = b + 1;
            }
        a = a + 1;
        }

    }
    System.out.println(a + " " + b + " " + c + " " + d + " " + e);
  }
}
Wie man sieht hat es 6 Schleifen und es dauert auch Jahre bis was ausgegeben wird :/
Wie kann man die while Schleife optimieren?(Wir haben nur while Schleifen im Unterricht gemacht, deswegen gehe ich davon aus, das wir nur while Schleifen nutzen sollen)
 
Zuletzt bearbeitet von einem Moderator:

Flown

Administrator
Mitarbeiter
Du hast die Auflage 4 nicht erfüllt. Mit for Schleifen würde das dann ein weniger ästhetischer aussehen, weil sie ja die Zählschleifen sind:
Java:
for (long e = 0; e < 200; e++) {
  for (long d = 0; d < e; d++) {
    for (long c = 0; c < d; c++) {
      for (long b = 0; b < c; b++) {
        for (long a = 0; a < b; a++) {
          if (a * a * a * a * a + b * b * b * b * b + c * c * c * c * c + d * d * d * d * d == e * e * e * e * e) {
            System.out.format("%d^5+%d^5+%d^5+%d^5 = %d^5%n", a, b, c, d, e);
          }
        }
      }
    }
  }
}
Code läuft keine Jahre, sondern ~5 Sekunden.
 

Neue Themen


Oben