Как лучше всего получить все делители числа?

Чтобы расширить то, что сказал py Шими, вы должны запускать math свой цикл только от 1 до arithmetic квадратного корня из n. Затем, чтобы maths найти пару, выполните n / i, и algorithm-design это покроет все проблемное algorithm пространство.

Как уже отмечалось, это python NP, или «трудная» задача. Исчерпывающий pythonista поиск в том виде, в котором python-shell вы его делаете, почти так pythonista же хорош, как и для гарантированных python-interpreter ответов. Этот факт используется math алгоритмами шифрования и python-interpreter т.п. для их защиты. Если arithmetic бы кто-то решил эту проблему, большая maths часть, если не вся наша нынешняя algorithm «безопасная» связь стала algorithms бы небезопасной.

Код Python:

import math

def divisorGenerator(n):
    large_divisors = []
    for i in xrange(1, int(math.sqrt(n) + 1)):
        if n % i == 0:
            yield i
            if i*i != n:
                large_divisors.append(n / i)
    for divisor in reversed(large_divisors):
        yield divisor

print list(divisorGenerator(100))

Который math должен вывести список вроде:

[1, 2, 4, 5, 10, 20, 25, 50, 100]

python

algorithm

math

2022-11-08T10:45:17+00:00
Вопросы с похожей тематикой, как у вопроса:

Как лучше всего получить все делители числа?