also erstmal geht soeine Zuweisung garnicht, da es mehrere Lösungen gibt und woher soll Delphi wissen wie was da zugewiesen werden soll.
schon alleine für Folgendes gibt es 13533 Lösungen
Delphi-Quellcode:
var
x, y, z: Integer;
begin
for x := -1000 to 1000 do
for y := x to 1000 do
for z := -1000000 to 1000000 do
if x * y + z = 1302 then
Memo1.Lines.Add(Format('%d * %d + %d = 1302', [x, y, z]));
Memo1.Lines.Add(Format('%d Lösungen', [Memo1.Lines.Count]));
end;
und das obwohl ich die Wertebereiche eingeschrenkt und doppelte Lösungen ignoriert hab.
x und y kann hier ja getauscht werden, was dann sozusagen fast doppelt soviele Lösungen Ergäbe.
jo, und je mehr Variablen und um so größer der wertebereich .... um so mehr wird es
du kannst ja mal schauen wie lange dieses hier braucht, um alles auszutesten und wie viel Lösungen es dann gibt
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
x, y, z, z2, q: Integer;
begin
q := 0;
for x := -1000 to 1000 do
for y := -1000 to 1000 do
for z := -1000000 to 1000000 do
for z2 := -1000000 to 1000000 do
if x * y + z - z2 = 1302 then
begin
if (q < 1000) or (q and $ff = 0) then Memo1.Lines.Add(Format('%d * %d + %d - %d = 1302', [x, y, z, z2]));
Inc(q);
end;
Memo1.Lines.Add(Format('%d Lösungen', [q]));
end;
wobei es hierfür schon eine sehr einfache vereinfachung gibt ... siehe erster Code ... ohne z2 prüfen und dann z nochmals in z-z2 zwelegen