为什么,while 循环是 运行 无限?
Why, while loop is running infinitely?
我想求出数字 600851475143 的质因数。
我在 for 循环中使用了 range() 方法但没有结果,它们(for 和 while)都是 运行 for infinitely。
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
Here's a solution 会给你想要的结果 [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))
我想求出数字 600851475143 的质因数。
我在 for 循环中使用了 range() 方法但没有结果,它们(for 和 while)都是 运行 for infinitely。
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
Here's a solution 会给你想要的结果 [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))