Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class FactorSummand:
- def __init__(self, prime, degree):
- self.prime = prime
- self.degree = degree
- def factorization(number):
- prime_numbers = []
- divisor = 2
- while divisor ** 2 <= number:
- if number % divisor == 0:
- count = 0
- while number % divisor == 0:
- number //= divisor
- count += 1
- prime_numbers.append(FactorSummand(divisor, count))
- divisor += 1
- if number > 1:
- prime_numbers.append(FactorSummand(number, 1))
- return prime_numbers
- number = int(input())
- factor = factorization(number)
- if factor[0].degree == 1:
- print('prime')
- elif len(factor) == 1:
- print('single')
- even_factor = [2] * factor[0].degree
- print(*even_factor)
- elif len(factor) == 2 and factor[1].degree == 1:
- print('single')
- even_factor = [2] * (factor[0].degree - 1) + [2 * factor[1].prime]
- print(*even_factor)
- elif len(factor) == 2:
- print('many')
- even_factor = [2] * (factor[0].degree - 1) + [2 * factor[1].prime ** factor[1].degree]
- print(*even_factor)
- even_factor = [2] * (factor[0].degree - 2) + [2 * factor[1].prime] + [2 * factor[1].prime ** (factor[1].degree - 1)]
- print(*even_factor)
- else:
- print('many')
- primes_other_product = 1
- for summand in factor[1:]:
- primes_other_product *= summand.prime ** summand.degree
- even_factor = [2] * (factor[0].degree - 1) + [2 * primes_other_product]
- print(*even_factor)
- even_factor = [2] * (factor[0].degree - 2) + [2 * factor[1].prime] + [2 * primes_other_product // factor[1].prime]
- print(*even_factor)
Advertisement
Add Comment
Please, Sign In to add comment