@Fuchs76Hier mal noch das versprochene Skript. Das Skript kann per Copy and Paste direkt in die Scilab-Konsole eingegeben werden. Scilab gibt es hier (gratis) zum Download: www.scilab.org
Mit einigen Änderungen läuft das Skript auch unter Octave oder Matlab, allerdings unter Octave wegen den verschachtelten For-Schleifen nur sehr langsam. Unter Matlab müsste es eigentlich relativ schnell laufen, da Matlab einen JIT-Compiler drin hat. Mangels Lizenz kann ich das aber hier nicht ausprobieren.
Variablen/Erklärungen:
gcd2(a,b): Funktion für grössten gemeinsamen Teiler
quad(): Funktion um primitive Quadrupel zu berechnen
A: Wert für A muss am Anfang festgelegt werden
UPB: Grenzwert für B, sollte grösser als A gewählt werden
UPC: Grenzwert für C, Sollte grösser als A gewählt werden
B: Laufvariable B, Startwert ist A
C: Laufvariable C, Startwert ist A
Ausgabe/Format:
A < B < C < K
Howto/Vorgehen:
Wert für A festlegen (z.B. A=1), Grenzwert für B und C festlegen (UPB=1000, UPC=1000), dann modifiziertes Skript per Zwischenablage in Scilab-Konsole einfügen und Enter drücken und dann abwarten und Tee trinken oder alternativ ein Snickers knabbern ...
// UNTERHALB DIESER LINIE BEGINNT SKRIPT
clear
function erg=gcd2(a,b)
r=modulo(a,b)
while(r>0) a=b;b=r;r=modulo(a,b);end
erg=b
endfunction
function quad()
A=1;
UPB=1000;
UPC=1000;
Third=1.0/3.0;
for B=A:UPB;
for C=A:UPC;
qval=A*A*A+B*B*B+C*C*C;
val=ceil(qval^(Third));
K=val;
val=K*K*K;
if (val==qval & C > B)
if (gcd2(A,B) == 1 | gcd2(A,C)==1 | gcd2(A,K)==1)
printf("\n%d %d %d %.0f", A, B, C, K);
end
end
end
end
printf("\n");
endfunction
quad()
// OBERHALB DIESER LINIE ENDET SKRIPT
Mit dem Skript gewinnt man natürlich keinen Schönheitswettbewerb und besonders schnell ist es auch nicht. Dafür ist es einfach zu Lesen/Verstehen. Eine schöne Ausrede für einen inkompetenten Hobbyprogrammierer, wie ich finde
:DEmodul