Code: Alles auswählen
#!/usr/bin/env python
# coding: utf8
from itertools import chain, count, imap, product as cartesian_product
from operator import mul
def product(values):
return reduce(mul, values, 1)
def iter_prime_factors(number):
for candidate in chain([2], count(3, 2)):
exponent = 0
while number % candidate == 0:
number /= candidate
exponent += 1
if exponent:
yield (candidate, exponent)
if number == 1:
return
def iter_divisors(number):
powers = [
[prime**i for i in xrange(exponent + 1)]
for prime, exponent in iter_prime_factors(number)
]
return imap(product, cartesian_product(*powers))
def main():
number = 228627036
print list(iter_prime_factors(number))
divisors = list(iter_divisors(number))
print divisors
print len(divisors)
if __name__ == '__main__':
main()