Выполните приведённую выше программу в среде программирования PascalABC.NET. Протестируйте программу на последовательности из пяти чисел: 16, 32, 40, 80 и 128. Верно ли работает программа?
Приведённая программа:
var
i, k, x, y, z: integer;
procedure nod(a, b: integer; var c: integer);
begin
while a <> b do
if a > b then a := a - b else b := b - a;
c := a
end;
begin
read(k);
read(x);
for i := 2 to k do
begin
read(y);
nod(x, y, z);
x := z
end;
writeln('НОД=', x)
end.
Сначала программа считывает nod(x,y,z). Процедура вычитает меньшее число из большего, пока они не станут равными; равное значение записывается в x := z сохраняет НОД уже прочитанной части последовательности.
| Шаг | Новое |
Входные |
Вычитания до равенства | Новый |
|---|---|---|---|---|
| вычитаем |
Для запуска в PascalABC.NET вводим сначала количество чисел , затем . Программа выводит НОД=. Проверка по определению НОД:
Программа работает верно для этой положительной последовательности. В коде процедуры предполагаются натуральные входные числа: при нуле цикл вычитаний мог бы не завершиться.
Пример запуска: ввод и ; вывод НОД=. Для данных чисел программа работает верно.
