009 – Pythagoreische Tripel

 

Ein Pythagoreisches Tripel wird von drei natürlichen Zahlen gebildet, die als Längen der Seiten eines rechtwinkeligen Dreiecks vorkommen können. Es muss also gelten:

a < b < c,\quad {a^2}+{b^2} = {c^2}

Beispiel:

{3^2}+{4^2} = 9+16 = 25 = {5^2}

Es gibt genau ein Pythagoreisches Tripel mit

a+b+c = 1000

Finde das Produkt abc!

Lösung

Möglichkeit 1

Gegeben sind zwei Formeln

{a^2}+{b^2} = {c^2}

a+b+c = 1000

für drei Unbekannte: a, b, c.

Wir eleminieren zunächst mit der zweiten Gleichung das c aus der ersten:

a+b+c = 1000\quad  \Rightarrow \quad {c^2} = {\left( {1000-a-b} \right)^2}

{a^2}+{b^2} = {\left( {1000-a-b} \right)^2}

Da alle drei Zahlen positiv sind (natürliche Zahlen), und ihre Summe gleich 1000 sein soll, kann keine der Zahlen größer als 998 sein:

\left( {\begin{array}{*{20}{c}}    a & b & c  \\   \end{array} } \right) \in {\left[ {1,998} \right]^3}

Es müssen also nur zwei Schleifen für a und b jeweils von 1 bis 998 durchlaufen werden.

Matlab-Code:

fertig = 0;

for a = 1 : 998
    for b = 1 : 998
        if a * a + b * b == (1000 - (a + b)) * (1000 - (a + b))
            fertig = 1;
            break;
        end
    end
    if fertig == 1
        break;
    end
end

c = 1000 - a - b;

a, b, c
produkt = a * b * c

Ergebnis:

a = 200
b = 375
c = 425
produkt = 31875000

Rechenzeit: 0.004038 Sekunden

Möglichkeit 2

Ein Pythagoreisches Tripel

\left( {\begin{array}{*{20}{c}}    a & b & c  \\   \end{array} } \right)

ist per Definition primitiv, wenn der größte gemeinsame Teiler (ggT) der drei Zahlen 1 ist:

ggT\left( {a,b,c} \right) = 1

Da in einem Pythagoerischen Tripel gilt

ggT\left( {a,b} \right) = ggT\left( {b,c} \right) = ggT\left( {c,a} \right)

ist ein solches Tripel genau dann primitiv, wenn gilt:

ggT\left( {a,b} \right) = 1

Schon die alten Griechen wussten, dass man ein Pythagoreisches Tripel schreiben kann als

a = {m^2}-{n^2},\quad b = 2mn,\quad c = {m^2}+{n^2},\quad m > n > 0,\quad m,n \in \mathbb{N}

Mit diesen Formeln erhält man immer ein Pythagoreisches Tripel, aber dieses ist nur genau dann primitiv, wenn gilt:

ggT\left( {m,n} \right) = 1

und wenn genau eine der beiden Zahlen m,n gerade ist. Von einem beliebigen Pythagoreischen Tripel kommt man zu einem primitiven, wenn man den ggT ausklammert, daher hat jedes Phythagoreische Tripel eine eindeutige Darstellung

a = \left( {{m^2}-{n^2}} \right)d,\quad b = 2mnd,\quad c = \left( {{m^2}+{n^2}} \right)d

Mit dieser Parametrisierung sehen wir:

a+b+c = 2m\left( {m+n} \right)d

Die rechte Seite ist laut Aufgabenstellung 1000, oder allgemein die Summe s. Um ein Pythagoreisches Tripel mit

a+b+c=s

zu finden, müssen wir also einen Teiler m > 1 von \frac{s}{2} und einen ungeraden Teiler k = m+n von \frac{s}{2m} mit m < k < 2m,\quad ggT\left( {m,k} \right) = 1 finden. Dann weisen wir zu:

n = k-m,\quad d = \frac{s} {{2mk}}

Ähnliche Artikel

Kommentar verfassen