Как лучше всего получить все делители числа?
Чтобы расширить то, что сказал 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
Как лучше всего получить все делители числа?
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.