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

问题描述

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

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...