mfgnik

Untitled

Jun 12th, 2020
948
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.63 KB | None | 0 0
  1. class FactorSummand:
  2.     def __init__(self, prime, degree):
  3.         self.prime = prime
  4.         self.degree = degree
  5.  
  6.  
  7. def factorization(number):
  8.     prime_numbers = []
  9.     divisor = 2
  10.     while divisor ** 2 <= number:
  11.         if number % divisor == 0:
  12.             count = 0
  13.             while number % divisor == 0:
  14.                 number //= divisor
  15.                 count += 1
  16.             prime_numbers.append(FactorSummand(divisor, count))
  17.         divisor += 1
  18.     if number > 1:
  19.         prime_numbers.append(FactorSummand(number, 1))
  20.     return prime_numbers
  21.  
  22.  
  23. number = int(input())
  24. factor = factorization(number)
  25. if factor[0].degree == 1:
  26.     print('prime')
  27. elif len(factor) == 1:
  28.     print('single')
  29.     even_factor = [2] * factor[0].degree
  30.     print(*even_factor)
  31. elif len(factor) == 2 and factor[1].degree == 1:
  32.     print('single')
  33.     even_factor = [2] * (factor[0].degree - 1) + [2 * factor[1].prime]
  34.     print(*even_factor)
  35. elif len(factor) == 2:
  36.     print('many')
  37.     even_factor = [2] * (factor[0].degree - 1) + [2 * factor[1].prime ** factor[1].degree]
  38.     print(*even_factor)
  39.     even_factor = [2] * (factor[0].degree - 2) + [2 * factor[1].prime] + [2 * factor[1].prime ** (factor[1].degree - 1)]
  40.     print(*even_factor)
  41. else:
  42.     print('many')
  43.     primes_other_product = 1
  44.     for summand in factor[1:]:
  45.         primes_other_product *= summand.prime ** summand.degree
  46.     even_factor = [2] * (factor[0].degree - 1) + [2 * primes_other_product]
  47.     print(*even_factor)
  48.     even_factor = [2] * (factor[0].degree - 2) + [2 * factor[1].prime] + [2 * primes_other_product // factor[1].prime]
  49.     print(*even_factor)
Advertisement
Add Comment
Please, Sign In to add comment