Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def div(num):
- return list(x for tup in ([i, num//i]
- for i in range(1, int(num**0.5)+1) if num % i == 0) for x in tup)
- def nwd(num1, num2):
- if num1 == 0:
- return num2
- return nwd(num2 % num1, num1)
- def nww(num1, num2):
- return num1 * num2 // nwd(num1, num2)
- def list_nww(num, num_list):
- if len(num_list) == 0:
- return 0
- if len(num_list) > 1:
- return nww(num, list_nww(num_list[0], num_list[1:]))
- return nww(num, num_list[0])
- def checking(group, n):
- for l in range(2, len(group) + 1):
- group_temp = group[0: l]
- if list_nww(group_temp[0], group_temp[1:]) == n:
- return group_temp[0], group_temp[-1]
- z = int(input())
- for _ in range(z):
- M = int(input())
- divisors = div(M)
- divisors.sort()
- k = 0
- while k < len(divisors) - 1:
- if divisors[k] + 1 == divisors[k + 1]:
- m = 1
- while divisors[k] + m == divisors[k + m]:
- m += 1
- if k + m == len(divisors):
- break
- group = divisors[k: k + m]
- if type(checking(group, M)) is tuple:
- print(checking(group, M)[0], checking(group, M)[1])
- break
- k += m
- else:
- k += 1
- else:
- print("NIE")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement