spróbuj trochę jaśniej pisać.
potrzebujesz wypisać tylko wartości "c" ? czy wszystkie trójki? a może tylko jedną liczbę, oznaczającą ILOŚĆ takich wartości c w zadanym przedziale? jeśli rozwiązania są sprawdzane automatycznie, to może to zaważyć o ocenie całego zadania.
masz wypisać tylko 'trójki właściwe'? (nie będące wielokrotnościami innych), czy wszystkie możliwe?
np, trójka 5,12,13 jest 'właściwa' (niektórzy mówią 'pierwotna') natomiast 10,24,26 już nie (bo jest wielokrotnością 5,12,13). Chcesz wypisywać wszystkie, czy tylko te właściwe?
zasada jest prosta, tak jak ktoś wyżej wspomniał:
3 zagnieżdżone pętle: (G to górne ograniczenie podane programowi)
- zakres pierwszej (zmienna sterująca 'a') od 1 do G-2.
- zakres drugiej (zmienna sterująca 'b') od a+1 do G-1.
----> opcjonalnie: w tym miejscu sprawdzenie, czy liczby a, b są względnie pierwsze (czy ich NWD =1). Jeśli umieścisz sprawdzanie względnej pierwszości liczb A, B w tym miejscu, to w efekcie otrzymasz tylko 'trójki właściwe'. NWD można sprawdzić najłatwiej rekurencyjnym euklidesem (function nwd(a,b: longint):longint; begin if b=0 then nwd:=a else nwd:=nwd(b, a mod b); end; ) - tylko trzeba pamiętać o tym, żeby nie 'przepuszczać' pętli dalej, jeśli NWD<>0.
- zakres trzeciej (zmienna sterująca 'c') od b+1 do G.
---> w tym miejscu:
if sqr(a)+sqr(b)=sqr(c) then MAMY TRÓJKĘ (i tutaj, w zależności co chcesz, aby było wynikiem: albo powiększasz licznik rozwiązań /inc(licznik)/, albo wypisujesz na ekran 'c' /writeln(c); /, albo wypisujesz wszystkie trzy liczby: /writeln(a,' ',b,' ',c).
SQR- podniesienie do kwadratu. nie mylić ze SQRT- pierwiastek 2-go stopnia.