以素数因子显示多层数字(Python)

以素数因子显示多层数字(Python),python,primes,Python,Primes,我正在做Euler项目,刚刚完成了第3道题 这是我写的代码: num = 600851475143 values = [] i = 1 for n in range(1, num): if num % (i+0) == 0: values.append(n) if len(values) == 10: break i += 1 prod = 1 for v in values: prod *= v if

我正在做Euler项目,刚刚完成了第3道题

这是我写的代码:

num = 600851475143

values = []

i = 1

for n in range(1, num):

    if num % (i+0) == 0:
        values.append(n)

    if len(values) == 10:
        break

    i += 1

prod = 1

for v in values:

    prod *= v

    if prod == num:
        print('Largest prime factor of 600851475143 is', v)
        break
如何打印相乘的数字,直到素数出现(包括最后一个)


因此,只需打印前5个编号的
print(values)

要打印休息前使用的所有
值,您可以执行以下操作:

for i, v in enumerate(values):
    prod *= v
    if prod == num:
        print('Largest prime factor of {} is {}'.format(num, v))
        print('Numbers used:', values[:i])
        break

值[:5]
如何?我可以,是的,但是如果数字
num
改变怎么办?我想把它自动化..自动化成什么?我不是从你的问题中得出这个结论的。你是说在休息前使用的值吗?如果我把
值[:5]
与给定的数字一起使用。但是如果我将
num
变量更改为305,
[:5]
将中断,因为没有5个素数。就是这样。我会将
+1
添加到
print('number used:')中的
I
,值[:I])
,以同时包括基本因子。谢谢