- Теория:
- Алгоритмы:
- Числа:
|
ГЛАВА V
ОБЩИЕ ЗАДАЧИ
Автоморфные и пифагоровы числа
|
1. Найти количества автоморфных и пифагоровых чисел в интервале от 100 до 1200.
2. Найти первое двузначное автоморфное число, сумма цифр которого пифагорово число.
|
1. Найти количества автоморфных и пифагоровых чисел в интервале от 100 до 1200.
Ответ:
376 - автоморфное
625 - автоморфное
Количество пифагоровых троек =869
Количество автоморфных=2
program block05_01;
uses crt;
var a, b, c, kpif: integer; {a, b, c - пифагоровы числа;
kpif - количество пифагоровых чисел
}
x, p, kavt: integer;
{x - автоморфное число;
p - порядок числа;
kavt - количество автоморфных чисел}
begin clrscr;
{поиск количества пифагоровых троек}
for a:=100 to 1200 do
for b:=a to 1200 do
for c:=b to 1200 doIf c*c=a*a+b*b then
{поиск количества автоморфных чисел}
p:=1;
for x:=100 to 1200 do
begin
while p<=x do p:=p*10;
if x*x mod p = x then begin
writeln(x, ' - автоморфное');
inc(kavt)
end;
end;
writeln; writeln('kpif=',kpif);
writeln('kavt=', kavt);
end.
|
2. Найти первое двузначное автоморфное число, сумма цифр которого пифагорово число.
Ответ: 25 - автоморфное Сумма цифр=7
76 - автоморфное
Сумма цифр=13 76 - первое число, сумма цифр которого - пифагорово число
program block05_02;
uses crt;
var ch, ch1, s, p :integer; {ch - проверяемое на автоморфность число;
ch1 - дубликат числа;
s - сумма цифр;
p -
порядок числа}
a,b,c: integer; {a, b, c - числа пифагоровой тройки}
f:boolean;
begin
clrscr;
f:=false;
ch:=9; {последнее однозначное число перед двузначными}
repeat
inc(ch);
ch1:=ch;{Создали дубликат числа для поиска суммы его цифр}
s:=0;
while ch1< >0 do
begin
s:=s+ch1 mod 10;
ch1:=ch1 div 10
end;
{Определяем автоморфность числа:}
p:=1;
while p<=ch do p:=p*10;
if ch*ch mod p = ch then
begin
writeln(ch:5, ' - автоморфное'); writeln('сумма цифр=', s);
{Находим пифагоровы тройки и сравниваем пифагоровы числа с S:}
for a:=1 to s do for b:=a to s do
for c:=b to s do
{если найдена тройка пифагоровых чисел и число S равно одному из чисел, то выводим на экран искомое число}
If (c*c=a*a+b*b) and ((s=a) or (s=b) or (s=c)) thenbegin
writeln(ch, ' - первое число, сумма цифр которого - пифагорово число');
f:=true {флаг для окончания цикла}
end;
end;
until f =true;
end.
|
|
|
|
|