ВХОД

ПРОГРАММИРОВАНИЕ

ЧИСЛЕННЫЕ АЛГОРИТМЫ

Начало > Глава V. Автоморфные, Пифагоровы числа > Задачи с решениями

ГЛАВА V. ЗАДАЧИ С РЕШЕНИЯМИ НА ПИФАГОРОВЫ ЧИСЛА

1. (3 способа) Составить программу, которая находит все пифагоровы тройки, не превышающих 20.
2. Найти количество пифагоровых троек не превышающих числа n. n вводится с клавиатуры.
3. Вывести на экран двузначные примитивные пифагоровы тройки.
4. Найти количество трехзначных примитивных пифагоровых троек.

_____________________________________________

1(1). Составить программу, которая находит все пифагоровы тройки, не превышающих 20.
Первый способ решения. Сортировка по возрастанию первого числа.
Ответ:
3 4 5 - пифагоровы
5 12 13 - пифагоровы
6 8 10 - пифагоровы
8 15 17 - пифагоровы
9 12 15 - пифагоровы
12 16 20 - пифагоровы

program pif_01_01;
uses crt;
var
a, b, c: integer; {первое, второе, третье число}
a1:integer;{первое число в квадрате}
b1:integer;{второе число в квадрате}
c1:integer; {третье число в квадрате}
i:integer;{счетчик цикла}

begin clrscr;
a:=1 ;
while a<=20 do
    begin
    a1:=SQR(a); {квадрат первого числа}
    for b:=a to 20 do {от a, чтобы убрать повторяющиеся тройки чисел}
      begin
      b1:=SQR(b); {квадрат второго числа}
      for c:=1 to 20 do
        begin
        c1:=SQR(c); {квадрат третьего числа}
        if c1=a1+b1 then writeln (a:5,b:5,c:5,' - пифагоровы');
        end;
      end;
    inc(a);
    end;
end.
_____________________________________________
1(2). Составить программу, которая находит все пифагоровы тройки, не превышающих 20.

Второй способ решения. Сортировка по возрастанию первого числа. Ответ:
3 4 5 - пифагоровы
5 12 13 - пифагоровы
6 8 10 - пифагоровы
8 15 17 - пифагоровы
9 12 15 - пифагоровы
12 16 20 - пифагоровы

program pif_01_01;
uses crt;
var a,b,c,cc: integer;
begin clrscr;
for a:=1 to n do
    for b:=a to n do
      begin
      cc:=a*a+b*b;
      c:=1;
      while (c*c<cc) and (c<20) do inc(c);
      If sqr(c)=cc then writeln(a,' ',b,' ',c,' - пифагоровы');
      end;
end.
_____________________________________________
1(3). Составить программу, которая находит все пифагоровы тройки, не превышающих 20.
Третий способ решения.
Ответ:
3 4 5
5 12 13
6 8 10
8 15 17
9 12 15
12 16 20

program z1;
uses crt;
var x, y, z:integer; {проверяемые числа}
begin clrscr;
for x:=1 to 100 do
    for y:=x to 20 do
      for z:=y to 20 do
        if x*x+y*y=z*z then writeln(x:10,y:10,z:10);
end.
_____________________________________________
2. Найти количество пифагоровых троек не превышающих числа n. n вводится с клавиатуры.
Ответ: n=50
Количество пифагоровых троек = 20


program pif_02;
uses crt;
var
    a, b, c: integer; {первое, второе, третье число}
    n: integer;{максимальное число в тройке}
    kol: integer; {Количество пифагоровых троек}
    a1: integer;{первое число в квадрате}
    b1: integer;{второе число в квадрате}
    c1: integer; {третье число в квадрате}
    i: integer;{счетчик цикла}

    {(3, 4, 5), (6, 8, 10), (5, 12, 13), (9, 12, 15), (8, 15, 17), (12, 16, 20),
    (15, 20, 25), (7, 24, 25), (10, 24, 26), (20, 21, 29), (18, 24, 30),
    (10, 30, 34), (21, 28, 35), (12, 35, 37), (15, 36, 39), (24, 32, 40),
    (9, 40, 41), (27, 35, 45), (14, 48, 50), (30, 40, 50)…}


    begin
    clrscr;
    write('n='); readln(n);
    a:=1 ;
    while a<=n do
    begin
    a1:=SQR(a);
    for b:=a to n do
      begin
      b1:=SQR(b);
      for c:=1 to n do
        begin
        c1:=SQR(c);
        if c1=a1+b1 then inc(kol);
        end;
      end;
    inc(a);
    end;
writeln('Количество пифагоровых троек = ',kol)
end.
_____________________________________________

3. Вывести на экран двузначные примитивные пифагоровы тройки.
Ответ:

11 60 61
12 35 37
13 84 85
16 63 65
20 21 29
28 45 53
33 56 65
36 77 85
39 80 89
48 55 73
65 72 97

program pif_03;
uses crt;
var
    x, y, z: integer; {проверяемые числа}
    min, i, nod1, nod2, nod3: integer; {переменные для поиска НОД}
begin
clrscr;
for x:=10 to 99 do
for y:=x to 99 do
for z:=y to 99 do
    if x*x+y*y=z*z then
      begin
        if x<y then min:=x else min:=y;
        for i:=1 to min do
          if (x mod i=0) and (y mod i=0) then nod1:=i; {НОД для пары чисел x и y}

        if y <z then min:=y else min:=z;
        for i:=1 to min do
          if (y mod i=0) and (z mod i=0) then nod2:=i;{НОД для пары чисел y и z}

        if x <z then min:=x else min:=z;
        for i:=1 to min do
          if (x mod i=0) and (z mod i=0) then nod3:=i; {НОД для пары чисел x и z}

        {если НОДы тройки чисел равны 1 и сами числа пифагоровы,
        то тройка чисел - примитивная. Выводим ее на экран: }

        if (nod1=1) and (nod2=1) and (nod3=1 ) then
          writeln(x:10,y:10,z:10);

      end;
end.
_____________________________________________

4. Найти количество трехзначных примитивных пифагоровых троек.
Ответ: k=97

program pif_04;
uses crt;
var
    x, y, z: integer; {проверяемые числа}
    min, i, nod1, nod2, nod3: integer; {переменные для поиска НОД}
    k: integer; {количество трехзначных примитивных пифагоровых троек}
begin clrscr;
for x:=100 to 999 do
for y:=x to 999 do
for z:=y to 999 do
if x*x+y*y=z*z then
    begin
      if x<y then min:=x else min:=y;
      for i:=1 to min do
        if (x mod i=0) and (y mod i=0) then nod1:=i;{НОД для пары чисел x и y}


      if y<z then min:=y else min:=z;
      for i:=1 to min do
        if (y mod i=0) and (z mod i=0) then nod2:=i;{НОД для пары чисел y и z}

      if x<z then min:=x else min:=z;
      for i:=1 to min do
        if (x mod i=0) and (z mod i=0) then nod3:=i; {НОД для пары чисел x и z}


      {если НОДы тройки чисел равны 1 и сами числа пифагоровы, то тройка чисел - примитивная. Увеличим количество примитивных троек на 1}
      if ( nod1=1) and (nod2=1) and (nod3=1) then inc(k) ;

    end;
writeln('k=',k)
end.
_____________________________________________
Циклы | Числа | Цифры | Условия | Простые | Совершенные | Палиндромы | Фибоначчи | Близнецы | Дружественные | Автоморфные | Пифагоровы
Copyright ©2011 Nika A.S.
Hosted by uCoz