Оптимизация этого кода для поиска и факторизации номеров треугольников - PullRequest
0 голосов
/ 12 октября 2019

Итак, я знаю, если я
А) Пусть это будет продолжаться всю ночь с верхней границей 10 000 000 или B) Изменить диапазон n с шагом 500

Я могу получить ответ на этот вопросПроблема Эйлера. Но оба они чувствуют себя обманутыми / ленивыми. Я видел другие решения этого, опубликованные в C, но не в Python.

Моими основными областями оптимизации здесь, по-видимому, будет либо / или / оба более подходящие способы суммирования всех целых чисел до определенного значения, а также отсутствие постоянного создания и выгрузки Python списка факторов для каждого отдельного числапроверка. Прождав 20 минут с верхним пределом в миллион и программой не завершившей, я не доволен тем, как я это реализовал.

    for x in range(1,SomeUpperBound):
        n = sum(range(1,x))
        factorize(n)

def factorize(n):
    for i in range(1,n+1):
        if n > 1 and n % i == 0 and i not in factors:
            factors.append(i)
            if len(factors) == 500:
                print(n)
                print(factors)
    else: factors.clear()
...