python-3.x - 为什么,while循环无限运行?
问题描述
我想找到数字 600851475143 的主要因素。
我在 for 循环中使用了 range() 方法,但没有结果,它们(for 和 while)都在无限运行。
l=[]
nn=600851475143
n=nn-1
while n>1:
if nn%n==0:
j=n-1
while j>1:
if n%j==0:
break
j-=1
else:
l.append(n)
n-=1
print(l)
请帮助我,提前谢谢
解决方案
它不是。它只是很长,你正在递减 1
这是输出:
(...)
12 print(n)
13 n-=1
(...)
600850312864
600850312863
600850312862
600850312861
600850312860
600850312859
600850312858
600850312857
600850312856
600850312855
600850312854
这是一个可以为您提供所需结果的解决方案[71, 839, 1471, 6857]
nn=600851475143
def prime_factors(number):
factors = []
divisor = 2
while(number > 2):
if (number % divisor == 0):
factors.append(divisor)
number = number / divisor
else:
divisor += 1
return factors
print(prime_factors(nn))
推荐阅读
- python - tensorflow TypeError:无法解压不可迭代的浮点对象
- amazon-web-services - 是否可以通过 EndPoints(PrivateLink) 连接到面向 Internet 的 ALB?
- .net-core - .NET Core:发布自包含应用程序时,将 .exe 与其他库分开
- python-2.7 - Python 2.7 在其搜索路径中找不到模块
- swift - 如何通过拖动重新排列 SwiftUI ZStack 中的视图
- javascript - 从应用程序打开的浏览器权限(使用 javascript)
- java - 如何用正则表达式拆分java字符串?
- go - LinkError: WebAssembly.instantiate(): Import #1 module="go" function="runtime.resetMemoryDataView" 错误:函数导入需要一个可调用的
- c# - 如何将列表视图项中的元素带到整个应用程序的前面?
- database - 在 MS Access 中,如何过滤掉列中的值并将每个值添加到新列中?