Почему, пока цикл работает бесконечно? - PullRequest
0 голосов
/ 04 июня 2019

Я хочу найти основные факторы числа 600851475143.

Я использовал метод range () для цикла for, но безрезультатно, они оба (для и во время) работают бесконечно.

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 Ответ

1 голос
/ 04 июня 2019

Это не так. Это просто hella long, а вы уменьшаете на 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))
...