Помощь - Поиск - Пользователи - Календарь
Полная версия: Натуральные числа
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Максим
Найти все натуральные числа, не превосходящие заданного числа n, представимые в виде суммы квадратов двух каких-нибудь различных натуральных чисел.
Amro
Можно попробывать так, правда вывод плохой ;)
зато всё находит
Код
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
Второй цикл (по j) нужно пустить не до f, а до i-1.
Amro
Цитата
Второй цикл (по j) нужно пустить не до f, а до i-1.

zx1024 Если сделать так то прога будет находить не все числа!!!
К примеру не будет числа 2, не будет 8-ми, а должно быть!!!
Я согласен с тем что делая второй цикл до f мы перебираем лишнего, но в данной программе быстродействием можно пренебречь ...
Хотя я сам что то глючу, там же сказано разные нат числа, тагды прога будет для двух вариантов
первый если j до i-1
для разных нат чисел, как ты и имел ввиду
второй если J до f
для любых.......
zx1024
В любом случае, если нужны одинаковые, то до i.
2*2 + 5*5 = 5*5 + 2*2.
Amro
Цитата
В любом случае, если нужны одинаковые, то до i.

Точно ....
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.