问题描述
我正在尝试对任何数字作素数的列表,但我只想与众不同,所以我不希望数字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))