Я написал код, чтобы узнать LCM (Lowest Common Multiple) списка номеров, но в моем коде есть ошибка. Код приведен ниже:Вычислить LCM списка заданных чисел в Python
def final_lcm(thelist):
previous_thelist = thelist
prime_thelist = list(set(thelist) - set(returns_new_thelist(previous_thelist))
factors = 1
for i in prime_thelist:
factors = factors*i
new_thelist = returns_new_thelist(previous_thelist)
for i in range(1, 10000000000):
s_empty = []
for j in new_thelist:
if i % j == 0:
s_empty.append(True)
if len(new_thelist) == len(s_empty):
initial_lcm = i
break
final_lcm = factor*initial_lcm
return final_lcm
def returns_new_thelist(ll):
if 3 in ll:
ll.remove(3)
for i in ll:
if checks_if_prime(i) == True:
ll.remove(i)
return ll
def checks_if_prime(n):
if n == 2:
return True
import math
for i in range(math.ceil(0.5*n), 1, -1):
if n % i == 0:
return False
elif i == 2:
return True
print(final_lcm([1,2,3,4,5,6,7,8,9]))
Пожалуйста, простите мой плохой выбор переменных, я прошу вас, чтобы увидеть, если логика верна и что код работает.
Синтаксическая ошибка, которую я получаю, это , что «факторы» являются недопустимым синтаксисом, хотя я не согласен с этим. Скажите, пожалуйста, где мой код неправильный.
Вы должны смотреть в алгоритм Евклида: вычисления МДК с помощью простые факторизации излишне медленны и сложны. –
prime_thelist = list (set (thelist) - set (returns_new_thelist (previous_thelist)) - отсутствует скобка для списка (..). Prime_thelist = list (set (thelist) - set (returns_new_thelist (previous_thelist))) –