mfgnik

Untitled

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