class Nod: def __init__(self, e): self.e = e self.urm = None class Lista: def __init__(self): self.prim = None ''' crearea unei liste din valori citite pana la 0 ''' def creareLista(): lista = Lista() lista.prim = creareLista_rec() return lista def creareLista_rec(): x = int(input("x=")) if x == 0: return None else: nod = Nod(x) nod.urm = creareLista_rec() return nod ''' tiparirea elementelor unei liste ''' def tipar(lista): tipar_rec(lista.prim) def tipar_rec(nod): if nod != None: print (nod.e) tipar_rec(nod.urm) ''' program pentru test ''' def gcd(a, b): if b == 0: return a else: return gcd(b, a%b) def lcm(a, b): return a*b//gcd(a, b) def lcm_list(lista): if lista.prim == None: return 1 else: new_list = Lista() new_list.prim = lista.prim.urm return lcm(lista.prim.e, lcm_list(new_list)) def f(lista, e, e1): if lista.prim == None: return Lista() if lista.prim.e != e: new_list = Lista() new_list.prim = lista.prim.urm lista_returnata = f(new_list, e, e1) lista_de_returnat = Lista() lista_de_returnat.prim = Nod(lista.prim.e) lista_de_returnat.prim.urm = lista_returnata.prim return lista_de_returnat else: new_list = Lista() new_list.prim = lista.prim.urm lista_returnata = f(new_list, e, e1) lista_de_returnat = Lista() lista_de_returnat.prim = Nod(e1) lista_de_returnat.prim.urm = lista_returnata.prim return lista_de_returnat def main(): list = creareLista() tipar(list) print(lcm_list(list)) e=int(input("e=")) e1=int(input("e1=")) list1=f(list,e,e1) tipar(list1) main()