Ответ:
Вводятся три числа, поэтому k = 3. Сначала x = 12. Затем программа по очереди находит НОД текущего значения x и очередного числа, сохраняя результат в x.
Первый вызов: nod(12, 18, z). Пока значения не равны, вычитаем меньшее из большего:
- a = 12, b = 18: так как a < b, получаем b = 18 − 12 = 6.
- a = 12, b = 6: получаем a = 12 − 6 = 6.
- a = b = 6, поэтому c = 6. После вызова z = 6 и x = 6.
Второй вызов: nod(6, 15, z).
- a = 6, b = 15: получаем b = 15 − 6 = 9.
- a = 6, b = 9: получаем b = 9 − 6 = 3.
- a = 6, b = 3: получаем a = 6 − 3 = 3.
- a = b = 3, поэтому c = 3. После вызова z = 3 и x = 3.
Итоговая таблица основной программы:
| k | i | x | y | z |
|---|---|---|---|---|
| 3 | — | 12 | — | — |
| 3 | 2 | 6 | 18 | 6 |
| 3 | 3 | 3 | 15 | 3 |
Таблицы переменных процедуры nod:
| a | b | c |
|---|---|---|
| 12 | 18 | — |
| 12 | 6 | — |
| 6 | 6 | 6 |
| a | b | c |
|---|---|---|
| 6 | 15 | — |
| 6 | 9 | — |
| 6 | 3 | — |
| 3 | 3 | 3 |
Ответ: НОД чисел 12, 18 и 15 равен 3; программа выведет «НОД=3».
