N, M = list(map(int, input().split()))



if M % N == 0:

    ans = M // N

else:

    for i in range(1, M // N + 1):

        if M % i == 0:

            ans = i

            if M // i > i and M // i <= M // N:

                ans = M // i

                break

        

print(ans)
N, M = list(map(int, input().split()))



if M % N == 0:

    ans = M // N

else:

    ans = 0

    for i in range(1, int(M ** 0.5) + 1):

        if M % i == 0:

            if i <= M // N:

                ans = max(ans, i)

            if M // i <= M // N:

                ans = max(ans, M // i)

        

print(ans)
N, M = list(map(int, input().split()))
if M % N == 0:
    ans = M // N
else:
    for i in range(1, M // N + 1):
        if M % i == 0:
            ans = i
            if M // i > i and M // i <= M // N:
                ans = M // i
                break
print(ans)

N, M = list(map(int, input().split()))
if M % N == 0:
    ans = M // N
else:
    ans = 0
    for i in range(1, int(M**0.5) + 1):
        if M % i == 0:
            if i <= M // N:
                ans = max(ans, i)
            if M // i <= M // N:
                ans = max(ans, M // i)
print(ans)

-    for i in range(1, M // N + 1): +    ans = 0 +    for i in range(1, int(M**0.5) + 1): -            ans = i -            if M // i > i and M // i <= M // N: -                ans = M // i -                break +            if i <= M // N: +                ans = max(ans, i) +            if M // i <= M // N: +                ans = max(ans, M // i)