from itertools import combinations
import time

start = time.time()

def decomp(n):
    D = dict() # dictionnaire vide
    k = 2
    while n > 1:
        exposant = 0
        while n%k == 0:
            exposant += 1
            n /= k
        if exposant != 0:
            D[k] = exposant
        k = k + 1
        
    return D

def liste_diviseurs(nombre):
    D = decomp(nombre)
    L = ['1']
    for key,value in D.items():
        for _ in range(value):
            L.append(str(key))
            
    A = [ [] for _ in range(len(L)-1) ]
    
    for i in range( 2 , len(L)+1 ):
        for j in combinations(L,i):
            if j not in A[i-2]:
                A[i-2].append( j )
        
    diviseurs_list = [1]
    for line in A:
        for c in line:
            p = 1
            for n in c:
                p *= int(n)
            if p not in diviseurs_list:
                diviseurs_list.append(p)
    
    return sorted(diviseurs_list)
"""
def liste_diviseurs( n ):
    L = [1]
    for i in range(2,n+1):
        if n%i == 0:
            L.append(i)
            
    return L
"""

print( liste_diviseurs(1985856585) )

print(time.ctime(time.time() - start)[11:19])