Упражнение 1: a = int(input("Введите первое число: ")) b = int(input("Введите второе число: "))
count = 0 # счетчик количества шагов цикла
while b != 0: a, b = b, a % b count += 1
print("НОД =", a) print("Количество шагов цикла:", count)
Упражнение 2: count = 0 # счетчик количества чисел в потоке
while True: num = int(input("Введите число: ")) if num == 0: break count += 1
print("Количество чисел в потоке:", count)
Упражнение 3: product = 1 # переменная для хранения произведения num = 1 # начальное значение числа
while num != 0: num = int(input("Введите число: ")) if num != 0: product *= num
print("Произведение чисел в потоке:", product) Дополнительное задание: (не знаю правильно ли получится)
def euclid_algorithm(a, b):
Обычный алгоритм Евклида для нахождения НОД
count = 0 while b != 0: a, b = b, a % b count += 1 return a, count
def modified_euclid_algorithm(a, b): """ Модифицированный алгоритм Евклида для нахождения НОД """ count = 0 while b != 0: a = a % b a, b = b, a count += 1 return a, count
Теперь мы можем вызвать обе функции для заданных чисел и сравнить количество шагов:
a = int(input("Введите первое число: ")) b = int(input("Введите второе число: "))
gcd, count1 = euclid_algorithm(a, b) print(f"Обычный алгоритм Евклида: НОД = {gcd}, количество шагов = {count1}")
gcd, count2 = modified_euclid_algorithm(a, b) print(f"Модифицированный алгоритм Евклида: НОД = {gcd}, количество шагов = {count2}")
if count1 < count2: print("Обычный алгоритм быстрее") elif count2 < count1: print("Модифицированный алгоритм быстрее") else: print("Оба алгоритма выполняются за одинаковое количество шагов")
Answers & Comments
Verified answer
Упражнение 1:a = int(input("Введите первое число: "))
b = int(input("Введите второе число: "))
count = 0 # счетчик количества шагов цикла
while b != 0:
a, b = b, a % b
count += 1
print("НОД =", a)
print("Количество шагов цикла:", count)
Упражнение 2:
count = 0 # счетчик количества чисел в потоке
while True:
num = int(input("Введите число: "))
if num == 0:
break
count += 1
print("Количество чисел в потоке:", count)
Упражнение 3:
product = 1 # переменная для хранения произведения
num = 1 # начальное значение числа
while num != 0:
num = int(input("Введите число: "))
if num != 0:
product *= num
print("Произведение чисел в потоке:", product)
Дополнительное задание:
(не знаю правильно ли получится)
def euclid_algorithm(a, b):
Обычный алгоритм Евклида для нахождения НОД
count = 0
while b != 0:
a, b = b, a % b
count += 1
return a, count
def modified_euclid_algorithm(a, b):
"""
Модифицированный алгоритм Евклида для нахождения НОД
"""
count = 0
while b != 0:
a = a % b
a, b = b, a
count += 1
return a, count
Теперь мы можем вызвать обе функции для заданных чисел и сравнить количество шагов:
a = int(input("Введите первое число: "))
b = int(input("Введите второе число: "))
gcd, count1 = euclid_algorithm(a, b)
print(f"Обычный алгоритм Евклида: НОД = {gcd}, количество шагов = {count1}")
gcd, count2 = modified_euclid_algorithm(a, b)
print(f"Модифицированный алгоритм Евклида: НОД = {gcd}, количество шагов = {count2}")
if count1 < count2:
print("Обычный алгоритм быстрее")
elif count2 < count1:
print("Модифицированный алгоритм быстрее")
else:
print("Оба алгоритма выполняются за одинаковое количество шагов")