Python 很好的素数因子,但我必须在列表中只给出不同的答案

Python 很好的素数因子,但我必须在列表中只给出不同的答案,python,distinct,factors,Python,Distinct,Factors,我正试图为任何数字制作一个素数因子列表,但我只想要不同的数,所以我不需要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:

我正试图为任何数字制作一个素数因子列表,但我只想要不同的数,所以我不需要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))
def素数(n):
primfac=[]
d=2
而d*d 1:
primfac.append(n)
返回primfac
印刷品(素数(18))

任何时候,只要有多个值,就可以获取它们的集合。如果需要列表,可以将其转换回列表:

列表(集合([2,2,2]))
整个函数现在看起来像:

def素数(n):
primfac=[]
d=2
而d*d 1:
primfac.append(n)
返回列表(集合(primfac))

将您的列表转换为一组,然后您就不会得到重复的值。我只是在搞乱一些东西,然后将其复制粘贴回去。我同意,除了最后一行之外,它应该保持不变,以保持清晰