Как мне сохранить значение в list_=[] при вычислении LCM между двумя числами?

Как сохранить значение в list_=[ ] при расчете LCM между двумя числами? Мне нужно сохранить каждый фактор для обоих чисел.

Мой код:

def lcm(x, y):
    if x > y:
        greater = x
    else:
        greater = y
    lcms =[]
    while(True):

        if((greater % x == 0) and (greater % y == 0)):
            lcm = greater
            lcms.append(lcm)
            break   
        greater += 1
    print(lcms)
    return lcm


t= int(input())
for T in range(1, t+1):
    l= list(map(int, input().split()))
    print (lcm(x=l[0],y=l[1]))

Предположим, входные данные тестового примера — t=1 и l = [9, 20], а выходные данные — 180. Итак, мне нужно напечатать список, в котором он содержит каждое целое число LCM из обоих входов, а затем мне нужно напечатать LCM между ними.

Я получаю значение LCM, но не могу напечатать list = [ ], содержащее LCM, как это [2,3,5] вместо [2,2,3,3,5] (Причина: мне также нужно удалить из списка повторяющиеся целочисленные значения.)


person ashwanidv100    schedule 27.02.2018    source источник
comment
Вы смотрите на LCM или GCF?   -  person Umang Gupta    schedule 27.02.2018
comment
Я не знаю, сможем ли мы помочь вам, потому что существует только одно НОК (наименьшее общее кратное) пары чисел, и поэтому неясно, что вы хотите перечислить. Возможно, между тем, что вы хотите, и LCM есть какая-то связь, но какая это связь, не очевидно. Постарайтесь объяснить это лучше, и, возможно, мы сможем помочь.   -  person Blckknght    schedule 27.02.2018
comment
Я просто хочу рассчитать LCM между 9 и 20 и хочу сохранить каждый фактор в списке.   -  person ashwanidv100    schedule 27.02.2018


Ответы (1)


Нет проблем, я получил решение. Спасибо за помощь!!

   def lcm(x, y):
        a= x*y
        b=[]
        for i in range(2,a-1):
            if i > 1:
                for j in range(2,i):
                    if (i % j) == 0:
                        break
                else:
                    b.append(i)
        c= len(b)
        d=[]
        for k in b:
            if(a%k==0):
                d.append(k)
        total = 1 
        for x in d:
                total *= x      
        #print(total)

        #print(d)       
        return total


    t= int(input())
    for T in range(1, t+1):
        l= list(map(int, input().split()))
        print (lcm(x=l[0],y=l[1]))
person ashwanidv100    schedule 27.02.2018