# Widerlegung der Eulerschen Vermutung Hilfe



## 1201smiley (1. Nov 2015)

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:

```
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)


----------



## Flown (1. Nov 2015)

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:

```
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.


----------

