Advertisement
CyberN00b

МКОШП Задача Делители

Nov 2nd, 2020 (edited)
222
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.92 KB | None | 0 0
  1. import math
  2. n = int(input())
  3. for g in range(n):
  4.     a, b = map(int, input().split())
  5.     A = a
  6.     B = b
  7.     ans = 0
  8.     if a % b != 0:
  9.         print(a)
  10.     else:
  11.         count = 0
  12.         arr = []
  13.         dl = []
  14.         for i in range(2, int(math.sqrt(B)) + 1):
  15.             if b % i == 0:
  16.                 arr.append(i)
  17.                 dl.append(1)
  18.                 b /= i
  19.             while b % i == 0:
  20.                 dl[-1] += 1
  21.                 b /= i
  22.         if b != 1:
  23.             arr.append(int(b))
  24.             dl.append(1)
  25.         c = 0
  26.         while A % arr[0] == 0:
  27.             c += 1
  28.             A /= arr[0]
  29.         mn = arr[0] ** (c - dl[0] + 1)
  30.         for i in range(1, len(arr)):
  31.             c = 0
  32.             while A % arr[i] == 0:
  33.                 c += 1
  34.                 A /= arr[i]
  35.             t = arr[i] ** (c - dl[i] + 1)
  36.             if t < mn:
  37.                 mn = t
  38.         print(a // mn)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement