Var x,y,a,b:integer;
begin
write('x, y:');
readln(x,y);
if (x>0)and(y>0) then
begin
a:=x; b:=y;
while a<>b do
if a>b then a:=a-b else b:=b-a;
writeln('НОД(',x,',',y,') = ',a);
end
else writeln('Ошибка ввода');
end.
Пример:
<span>x, y:
50 125
НОД(50,125) = 25</span>
Элементарно!
1) Разбиваем 27 монет на 3 кучки по 9 монет. Сравниваем 2 кучки.
Какая легче - в той и фальшивая монета. Если они равны, то фальшивая в третьей кучке, которую не взвешивали.
Получилась кучка из 9 монет, одна фальшивая. Осталось 2 взвешивания.
2) Точно также разбиваем 9 монет на 3 по 3 монеты и сравниваем две.
Какая легче - в той и фальшивая монета. Если они равны, то фальшивая в третьей кучке, которую не взвешивали.
Получилась кучка из 3 монет, одна фальшивая. Осталось 1 взвешивание.
3) Сравниваем 2 монеты. Какая легче - та и фальшивая.
Если они равны, то фальшивая третья, которую не взвешивали.
Смотрите документ, там текст программы. Картинки -- демонстрация работы.