Problem:
Score : 400 points

Problem Statement

You are given integers N and M.

Consider a sequence a of length N consisting of positive integers such that a_1 + a_2 + ... + a_N = M. Find the maximum possible value of the greatest common divisor of a_1, a_2, ..., a_N.

Constraints

All values in input are integers.

1 \leq N \leq 10^5

N \leq M \leq 10^9

Input

Input is given from Standard Input in the following format:

N M

Output

Print the maximum possible value of the greatest common divisor of a sequence a_1, a_2, ..., a_N that satisfies the condition.

Sample Input 1

3 14

Sample Output 1

2

Consider the sequence (a_1, a_2, a_3) = (2, 4, 8). Their greatest common divisor is 2, and this is the maximum value.

Sample Input 2

10 123

Sample Output 2

3

Sample Input 3

100000 1000000000

Sample Output 3

10000

Solution in C++14 (GCC 5.4.1) (judge verdict: Accepted)

#include <bits/stdc++.h>

using namespace std;

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    int n,m,i,sqt,res=0;
    cin>>n>>m;
    sqt=(int)ceil(sqrt(m));
    for(i=1;i<=sqt;i++)
    {
        if(m%i==0)
        {
            if(i>=n)res=max(res,m/i);
            if(m/i>=n)res=max(res,i);
        }
    }
    cout<<res<<endl;
    /*int n,x[102],y[102],h[102],i,j,k,temp,height;
    cin>>n;
    for(i=0;i<n;i++)cin>>x[i]>>y[i]>>h[i];
    for(i=0;i<=100;i++)
    {
        for(j=0;j<=100;j++)
        {
            height=h[0]+abs(x[0]-i)+abs(y[0]-j);
            for(k=1;k<n;k++)
            {
                temp=h[k]+abs(x[k]-i)+abs(y[k]-j);
                if(temp!=height)break;
            }
            if(k==n && height>0){cout<<i<<" "<<j<<" "<<height<<endl;return 0;}
        }
    }*/
    return 0;
}