Опубликован: 02.11.2024 33
Условие: Напишите программу, которая вычисляет наибольший общий делитель (НОД) для двух целых чисел a
и b
(включая отрицательные).
Наибольший общий делитель - это наибольшее число, на которое оба числа делятся без остатка.
Решение:
# функция нахождения НОД вычитанием
def get_gcd(a, b):
while a != b:
if abs(a) > abs(b):
a = abs(a) - abs(b)
else:
b = abs(b) - abs(a)
return a
while True:
x = int(input("Введите первое число: "))
y = int(input("Введите второе число: "))
if x != 0 and y != 0:
break
else:
print("Ошибка. Введите целые числа не равные 0")
print(f"Наибольший общий делитель: {get_gcd(x, y)}")
# функция нахождения НОД делением
def get_gcd(a, b):
while a != 0 and b !=0:
if abs(a) > abs(b):
a = abs(a) % abs(b)
else:
b = abs(b) % abs(a)
return a + b
while True:
x = int(input("Введите первое число: "))
y = int(input("Введите второе число: "))
if x != 0 and y != 0:
break
else:
print("Ошибка. Введите целые числа не равные 0")
print(f"Наибольший общий делитель: {get_gcd(x, y)}")
gcd()
модуля math
.В стандартной библиотеке Python в модуле math
есть функция gcd(x, y)
, вычисляющая наибольший общий делитель двух чисел.
import math
print(f"Наибольший общий делитель: {math.gcd(x, y)}")
Для нахождения НОД трех и более чисел можно воспользоваться функцией reduce()
из модуля functools
, которая последовательно вычисляет НОД каждой пары смежных чисел из списка.
from math import gcd
from functools import reduce
reduce(gcd, [5, 15, 35, 55]) # 5
Задача: Решение квадратного уравнения
Задача: Тренажер таблицы умножения
Задача: Наибольший числовой палиндром
Задача: Разложение числа на простые множители
Комментариев нет.