Составить программку нахождения меньшего общего кратного(НОК) двух чисел m и n,
Составить программку нахождения меньшего общего кратного(НОК) 2-ух чисел m и n, используя формулу n*m=НОД(m,n)*НОК(n,m). Создать испытания для проверки правильности работы программки.
Задать свой вопросВ программке на Питоне реализован метод Евклида для нахождения НОД и найдено НОК из формулы из условия. Великая часть тестов для проверки использует случайные числа, для которых, например, проверяется, что НОК и НОД от (x, y) не меняются, если их искать от (y, x), и т.д. (assert expr выкидывает исключение, если expr неправильно, так что если test сработало без ошибок, значит, всё ок)
def gcd_lcm(a, b):
x, y = a, b
while x != 0 and y != 0:
x, y = y % x, x
gcd = x + y
lcm = a // gcd * b
return gcd, lcm
def test():
from random import randint
x, y, z = [randint(1, 1000) for _ in range(3)]
xx = gcd_lcm(x, x)
xy = gcd_lcm(x, y)
yx = gcd_lcm(y, x)
yz = gcd_lcm(y, z)
x1 = gcd_lcm(x, 1)
zx_y = gcd_lcm(z * x, y)
zx_zy = gcd_lcm(z * x, z * y)
gcd_xy_z = gcd_lcm(xy[0], z)[0]
gcd_x_yz = gcd_lcm(x, yz[0])[0]
assert xx == (x, x)
assert xy == yx
assert xy[1] % xy[0] == 0
assert xy[1] % x == 0
assert xy[1] % y == 0
assert x % xy[0] == 0
assert y % xy[0] == 0
assert x1[0] == 1
assert x1[1] == x
assert zx_y[0] % xy[0] == 0
assert zx_y[1] % xy[1] == 0
assert zx_zy[0] == z * xy[0]
assert zx_zy[1] == z * xy[1]
assert gcd_xy_z == gcd_x_yz
assert gcd_lcm(2**7 * 3**15, 3**4 * 5**3) == (3**4, 2**7 * 3**15 * 5**3)
assert gcd_lcm(7 * 917887, 7 * 850177) == (7, 7 * 850177 * 917887)
if __name__ == "__main__":
for _ in range(100):
test()
-
Вопросы ответы
Статьи
Информатика
Статьи
Математика.
Разные вопросы.
Разные вопросы.
Математика.
Разные вопросы.
Математика.
Физика.
Геометрия.
Разные вопросы.
Обществознание.