Problem 9: Spezielles pythagoräisches Tripel

Gesucht werden drei Zahlen, deren Summe 1000 ist und für die der Satz des Pythagoras gilt! [das englische Original]

Als ich die Aufgabe zum ersten Mal las, hatte ich ein Bauchgefühl, dass es doch deutlich mehr als genau ein Tripel geben muss. Die programmierte Lösung zeigt jedoch, dass es wirklich nur genau 3 ganze Zahlen gibt, für die die beiden o.g. Bedingungen gelten.

Das Programm dazu ist recht trivial: Es braucht lediglich 2 Schleifen – eine äußere von 1 bis 999 und eine innere vom aktuellen Wert der äußeren bis ebenfalls 999. Die dritte Zahl ergibt sich dann als Differenz von 1000 und den beiden Laufvariablen. So muss nun nur noch der Satz des Pythagoras geprüft werden:

public String solve() {

   int result = 0;

   for( int a = 1; a < 1000; a++ ) {
      for( int b = a; b < 1000; b++ ) {
         int c = 1000 - a - b;
         if( isTriplet( a, b, c ) ) {
            IO.debugln( "found triplet: (" + a + "," + b + "," + c + ")" );
            result = a * b * c;
         }
      }
   }

   return IO.i2s( result );
}

/**
* Checks if the given three number are a Pythagorean triplet.
*
* @param a the well-known a in the Pythagorean equation
* @param b the well-known b in the Pythagorean equation
* @param c the well-known c in the Pythagorean equation
* @return true, if a² + b² = c²
*/
private boolean isTriplet( int a, int b, int c ) {
   return ( a*a + b*b == c*c );
}

Den vollständigen Quellcode der Klasse für die Lösung des Problems 9 kann man sich hier anschauen!

<< Problem 8 Übersicht Problem 10 >>

Kommentar verfassen

Willkommen in Nico Dannebergs Netzwerk

%d Bloggern gefällt das: