Автор: Максим 19.10.2004 19:18
Найти все натуральные числа, не превосходящие заданного числа n, представимые в виде суммы квадратов двух каких-нибудь различных натуральных чисел.
Автор: Amro 21.10.2004 14:40
Можно попробывать так, правда вывод плохой ;)
зато всё находит
Код
uses crt;
var
n,f,i,j,nat: integer;
mnoz: set of byte;
begin
clrscr;
write('Задайте число n ');
readln(n);
f:=round(sqrt(n));
for i:=1 to f do
begin
for j:=1 to i-1 do
begin
nat:=sqr(i)+sqr(j);
if not (nat in mnoz) then
include(mnoz,nat)
else nat:=0;
if (nat<=n) then
if nat<>0 then
write(nat:3);
end;
writeln;
end;
readkey;
end.
Исправленно!!!
Автор: zx1024 21.10.2004 17:33
Второй цикл (по j) нужно пустить не до f, а до i-1.
Автор: Amro 21.10.2004 17:42
Цитата
Второй цикл (по j) нужно пустить не до f, а до i-1.
zx1024 Если сделать так то прога будет находить не все числа!!!
К примеру не будет числа 2, не будет 8-ми, а должно быть!!!
Я согласен с тем что делая второй цикл до f мы перебираем лишнего, но в данной программе быстродействием можно пренебречь ...
Хотя я сам что то глючу, там же сказано разные нат числа, тагды прога будет для двух вариантов
первый если j до i-1
для разных нат чисел, как ты и имел ввиду
второй если J до f
для любых.......
Автор: zx1024 21.10.2004 18:11
В любом случае, если нужны одинаковые, то до i.
2*2 + 5*5 = 5*5 + 2*2.
Автор: Amro 21.10.2004 18:51
Цитата
В любом случае, если нужны одинаковые, то до i.
Точно ....