od kilku dni (z przerwami nawet tygodni) pisze (probuje napisac) program generujacy wszystkie trojki pitagorejskie z jakiegos przedzialu [0..c]. rozwiazanie typu 3 zagniezdzone petelki nie wchodzi w gre gdyz bardzo wazna jest szybkosc tego programu. w skrocie: jaki jest najbardziej wydajny algorytm znajdowania wszystkich trojek pitagorejskich z danego przedzialu? moze ktos juz sie tym kiedys zajmowal i bedzie w stanie mi pomoc. bede bardzo wdzieczny ;]
sam doszedlem do czegos takiego:
var
a: double;
b,m,x,c,i,ile: integer;
begin
ile:=1;
c:=StrToInt(Edit1.Text);
b:=100;
m:=0;
a:=1;
for i:=5 to c do
begin
while a<b do
begin
m:=m+1;
a:=sqrt(m*(2*i-m));
b:=i-m;
x:=Floor(a);
if (x=a) and (b>a) then
begin
StringGrid1.Cells[0,ile]:=FloatToStr(a);
StringGrid1.Cells[1,ile]:=FloatToStr(b);
StringGrid1.Cells[2,ile]:=FloatToStr(i);
StringGrid1.RowCount:=StringGrid1.RowCount+1;
inc(ile);
end;
end;
b:=100;
m:=0;
a:=1;
ProgressBar1.Position:=i;
end;
end;
raczej watpie w to ze jest to algorytmy optymalny..... blagam o pomoc :)</b>