以素数因子显示多层数字(Python)
我正在做Euler项目,刚刚完成了第3道题 这是我写的代码:以素数因子显示多层数字(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
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])
,以同时包括基本因子。谢谢