很好的主要因素,但我只需要列表中的不同答案

fine prime factors but i have to only distinct answers in the list

我正在尝试为任何数字制作一个 list 素因数,但我只想要 distinct 个数字,所以我不需要是数字 8 ( 2,2,2) 我只想得到 [ 2] 但我不确定如何

     def primes(n):
    primfac = []
    d = 2
    while d*d <= n:
        while (n % d) == 0:
            primfac.append(d)  
            n //= d
        d += 1
    if n > 1:
       primfac.append(n)
    return primfac
print(primes(18))

只要你有多个值,你就可以获取它们的集合。如果你想要一个列表,你可以将它转换回一个列表:

list(set([2, 2, 2]))

整个函数现在看起来像:

def primes(n):
    primfac = []
    d = 2
    while d * d <= n:
        if n % d == 0:
            n //= d
            primfac.append(d)
        else:
            d += 1
    if n > 1:
        primfac.append(n)
    return list(set(primfac))