Можно ли представить число в виде суммы двух квадратов натуральных чисел

На вход программе подается натуральное число n (меньше или равно) 10 в 9 степени. Проверьте, можно ли представить его в виде суммы двух квадратов натуральных чисел. Выведите YES или NO в зависимости от ответа на вопрос задачи. В случае положительного ответа во второй строке выведите два числа, сумма квадратов которых равна n. Числа следует выводить в порядке неубывания. Максимальное время работы программы на одном тесте — 0,1 секунды.

В консоли:

code: #delphi
program Project2;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils,Math;
 
var n,i:integer;
    r:real;
begin
   WriteLn('vvedi n:');
   ReadLn(n);
   i:=1;
   while i*i<n do
     begin
      r:=n-i*i;
      if sqrt(r)=floor(sqrt(r)) then
        WriteLn(sqrt(r):1:0,',',i);
       i:=i+1;
     end;
   ReadLn;
end.

с окном

code: #delphi
uses Math;
 
procedure TForm1.Button1Click(Sender: TObject);
var n,i:integer;
    r:real;
begin
   n:=StrToInt(Edit1.Text);
   i:=1;
   while i*i<n do
     begin
      r:=n-i*i;
      if sqrt(r)=floor(sqrt(r)) then
        Memo1.Lines.Add(FloatToStr(sqrt(r))+','+IntToStr(i));
       i:=i+1;
     end;
end;

автор: Arriba

Поделиться:

Похожие статьи: