Как в Python ввести с клавиатуры 2 натуральных числа и сравнить количество шагов цикла для вычисления их НОД с помощью обычного и модифицированного алгоритмов Евклида? Пример: Введите два числа: 1998 2, НОД(1998,2)=2, Обычный алгоритм: 998, Модифицированный: 1.
Информатика 8 класс Алгоритмы и структуры данных Python ввод с клавиатуры натуральные числа НОД алгоритм Евклида обычный алгоритм модифицированный алгоритм сравнение шагов цикла Новый
Для решения данной задачи мы будем использовать два метода для нахождения наибольшего общего делителя (НОД) двух натуральных чисел: обычный алгоритм Евклида и модифицированный алгоритм. Давайте рассмотрим каждый шаг подробно.
Шаг 1: Ввод данных
Сначала нам нужно ввести два натуральных числа с клавиатуры. В Python это можно сделать с помощью функции input()
. После ввода мы преобразуем строки в целые числа с помощью int()
.
num1, num2 = map(int, input("Введите два числа: ").split())
Шаг 2: Обычный алгоритм Евклида
Обычный алгоритм Евклида работает по следующему принципу: пока одно из чисел не станет равным нулю, мы заменяем большее число на остаток от деления большего на меньшее. Мы также будем считать количество шагов, чтобы сравнить его с модифицированным методом.
def gcd_normal(a, b):
steps = 0
while b != 0:
a, b = b, a % b
steps += 1
return a, steps
Шаг 3: Модифицированный алгоритм Евклида
Модифицированный алгоритм Евклида использует тот же принцип, но вместо двух переменных, он работает с одним числом и остатком. Мы также будем считать количество шагов.
def gcd_modified(a, b):
steps = 0
while b != 0:
a, b = b, a % b
steps += 1
return a, steps
Шаг 4: Вызов функций и вывод результатов
Теперь мы можем вызвать обе функции, передав им введенные числа, и вывести результаты на экран.
gcd1, steps_normal = gcd_normal(num1, num2)
gcd2, steps_modified = gcd_modified(num1, num2)
print(f"НОД({num1}, {num2}) = {gcd1}, Обычный алгоритм: {steps_normal}, Модифицированный: {steps_modified}")
Шаг 5: Полный код
Вот полный код программы, который включает все вышеперечисленные шаги:
num1, num2 = map(int, input("Введите два числа: ").split())
def gcd_normal(a, b):
steps = 0
while b != 0:
a, b = b, a % b
steps += 1
return a, steps
def gcd_modified(a, b):
steps = 0
while b != 0:
a, b = b, a % b
steps += 1
return a, steps
gcd1, steps_normal = gcd_normal(num1, num2)
gcd2, steps_modified = gcd_modified(num1, num2)
print(f"НОД({num1}, {num2}) = {gcd1}, Обычный алгоритм: {steps_normal}, Модифицированный: {steps_modified}")
Теперь, запустив этот код, вы сможете ввести два числа, и программа выведет их НОД, а также количество шагов, необходимых для вычисления НОД с помощью обоих алгоритмов.