import bisect



n,m = list(map(int, input().split()))



n_facs_s = []

n_facs_l = []

for i in range(1, int(-(-m**0.5//1))+1):

    if m%i == 0:

        n_facs_s.append(i)

        n_facs_l.append(m//i)





n_faces = n_facs_s + n_facs_l[::-1]

ind = bisect.bisect_right(n_faces, n)

if n_faces[ind-1] == n:

    ind-=1

print((m//n_faces[ind]))

n,m = list(map(int, input().split()))



ans = 1

for i in range(1,10**5):

    if m%i == 0:

        v = i

        cnt = m//i

        if cnt >= n:

            ans = max(ans,v)



        v = m//i

        cnt = i

        if cnt >= n:

            ans = max(ans,v)



print(ans)
import bisect

n, m = list(map(int, input().split()))
n_facs_s = []
n_facs_l = []
for i in range(1, int(-(-(m**0.5) // 1)) + 1):
    if m % i == 0:
        n_facs_s.append(i)
        n_facs_l.append(m // i)
n_faces = n_facs_s + n_facs_l[::-1]
ind = bisect.bisect_right(n_faces, n)
if n_faces[ind - 1] == n:
    ind -= 1
print((m // n_faces[ind]))

n, m = list(map(int, input().split()))
ans = 1
for i in range(1, 10**5):
    if m % i == 0:
        v = i
        cnt = m // i
        if cnt >= n:
            ans = max(ans, v)
        v = m // i
        cnt = i
        if cnt >= n:
            ans = max(ans, v)
print(ans)

-import bisect - -n_facs_s = [] -n_facs_l = [] -for i in range(1, int(-(-(m**0.5) // 1)) + 1): +ans = 1 +for i in range(1, 10**5): -        n_facs_s.append(i) -        n_facs_l.append(m // i) -n_faces = n_facs_s + n_facs_l[::-1] -ind = bisect.bisect_right(n_faces, n) -if n_faces[ind - 1] == n: -    ind -= 1 -print((m // n_faces[ind])) +        v = i +        cnt = m // i +        if cnt >= n: +            ans = max(ans, v) +        v = m // i +        cnt = i +        if cnt >= n: +            ans = max(ans, v) +print(ans)