Задать вопрос
27 декабря, 15:31

Напечатать все пифагоровы числа не привышающие 30 (алгоритм)

+5
Ответы (1)
  1. 27 декабря, 19:09
    0
    Перебираешь все взаимно простые m > n разной четности, так чтобы m*m было меньше 30. И формируешь тройки по формуле:

    k * (m*m-n*n, 2*m*n, m*m + n*n)

    Например так:

    function gcd (a, b: integer) : integer;

    begin

    if b = 0 then gcd : = a

    else if (a > b) and (b > 0) then gcd : = gcd (b, a mod b)

    else gcd : = gcd (b, a) ;

    end;

    procedure Print (m, n:integer) ;

    var i, a, b, c: integer;

    begin

    repeat

    i : = i + 1;

    a : = (m*m-n*n) * i;

    b : = 2*m*n*i;

    c : = (m*m+n*n) * i;

    if c < 30 then

    writeln (a, ' ', b, ' ', c)

    else break;

    until false;

    end;

    var m, n, s: integer;

    begin

    s : = Trunc (Sqrt (30)) ;

    for m : = 1 to s do

    for n : = m + 1 to s do

    if (gcd (n, m) = 1) and ((m mod 2) (n mod 2)) then

    Print (n, m)

    end.
Знаете ответ на вопрос?
Не уверены в ответе?
Правильный ответ на вопрос 👍 «Напечатать все пифагоровы числа не привышающие 30 (алгоритм) ...» по предмету 📗 Информатика. Развернутая система поиска нашего сайта обязательно приведёт вас к нужной информации. Как вариант - оцените ответы на похожие вопросы. Но если вдруг и это не помогло - задавайте свой вопрос знающим оппонентам, которые быстро дадут на него ответ!
Искать готовые ответы