Var x, L, M: integer; begin readln(x); L := x - 16; M := x + 16; while L <> M do if L > M...

0 голосов
99 просмотров

Var x, L, M: integer;
begin
readln(x);
L := x - 16;
M := x + 16;
while L <> M do
if L > M then
L := L - M
else
M := M – L;
writeln(M);
end.


20 (№ 424) Ниже записан алгоритм. Получив на вход число x, этот алгоритм печатает число M. Известно, что x > 100. Укажите наименьшее такое (т.е. большее 100) число x, при вводе которого алгоритм печатает 16.


Информатика (183 баллов) | 99 просмотров
Дан 1 ответ
0 голосов
Правильный ответ

В данной программе реализуется алгоритм поиска наибольшего общего делителя двух чисел (L и M). При этом M больше L на 32, а наибольший делитель чисел равен 16. Первое число > 100, кратное 16 - это 112, но наибольший общий делитель чисел 112-16 и 112+16 (96 и 128) равен 32. Следующее число, кратное 16 - это 128. Наибольший общий делитель 128-16 и 128+16 (112 и 144) = 16.
Ответ: 128

(194k баллов)