Beispiel #1
0
def get_divisors(number):
  ps = prime_factors(number)
  divisors = set(ps)
  divisors.add(1)
  l = 2
  while l <= len(ps):
    for c in itertools.combinations(ps, l):
      divisors.add(reduce(lambda x, y: x * y, c))
    l += 1
  return divisors
Beispiel #2
0
def smallest_multiple(min_val, max_val):
  min_val = max(min_val, 2)
  factor_counts = dict()
  for i in range(min_val, max_val+1):
    i_factors = prime_factors(i)
    for factor in i_factors:
      i_factor_count = i_factors.count(factor)
      if factor in factor_counts:
        factor_count = max(factor_counts[factor], i_factor_count)
      else:
        factor_count = i_factor_count
      factor_counts[factor] = factor_count
  product = 1
  for factor, count in factor_counts.iteritems():
    product = product * (factor ** count)
  return product
Beispiel #3
0
def count_divisors(number):
  num_ps = len(prime_factors(number))
  num_divisors = 1
  for k in range(1, num_ps+1):
    num_divisors += num_combinations(num_ps, k)
  return num_divisors