python快速求因子

发布时间 2023-04-04 21:07:32作者: jwb_9
n=2021041820210418
l=[]     # !!!!用于存因数不是因子例如:10=2*5
i=2
x=n
while i<pow(x+1,0.5):
    if x%i==0:
        l.append(i)
        x=x//i
    else:
        i+=1
l.append(x)
s=set()     # !!!!用于存因子 如10=1*2*5*10
s.add(1)
for j in l:
    p=set()
    for k in s:
        p.add(j*k)
    for k in p:
        s.add(k)
print(s)     #集合s内存放的即为n的所有因子

  第一步求质因子,第二步用质因子构造所有因子

优点:对于数据大的数能够快速算出所有因子