Advertisement
Guest User

Untitled

a guest
Nov 12th, 2019
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.33 KB | None | 0 0
  1. def div(num):
  2.     return list(x for tup in ([i, num//i]
  3.                 for i in range(1, int(num**0.5)+1) if num % i == 0) for x in tup)
  4.  
  5. def nwd(num1, num2):
  6.     if num1 == 0:
  7.         return num2
  8.     return nwd(num2 % num1, num1)
  9.  
  10.  
  11. def nww(num1, num2):
  12.     return num1 * num2 // nwd(num1, num2)
  13.  
  14.  
  15. def list_nww(num, num_list):
  16.     if len(num_list) == 0:
  17.         return 0
  18.     if len(num_list) > 1:
  19.         return nww(num, list_nww(num_list[0], num_list[1:]))
  20.     return nww(num, num_list[0])
  21.  
  22.  
  23. def checking(group, n):
  24.     for l in range(2, len(group) + 1):
  25.         group_temp = group[0: l]
  26.         if list_nww(group_temp[0], group_temp[1:]) == n:
  27.             return group_temp[0], group_temp[-1]
  28.  
  29. z = int(input())
  30. for _ in range(z):
  31.     M = int(input())
  32.     divisors = div(M)
  33.     divisors.sort()
  34.     k = 0
  35.     while k < len(divisors) - 1:
  36.  
  37.         if divisors[k] + 1 == divisors[k + 1]:
  38.             m = 1
  39.             while divisors[k] + m == divisors[k + m]:
  40.                 m += 1
  41.                 if k + m == len(divisors):
  42.                     break
  43.             group = divisors[k: k + m]
  44.             if type(checking(group, M)) is tuple:
  45.                 print(checking(group, M)[0], checking(group, M)[1])
  46.                 break
  47.             k += m
  48.         else:
  49.             k += 1
  50.     else:
  51.         print("NIE")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement