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 PHP7 (7.0.15) (judge verdict: Wrong Answer)

<?php
list($n, $m) = explode(" ", trim(fgets(STDIN)));

$f = [];
$mm = $m;
$lim =  min(100000, $m) + 5;
for($i = 2; $i < sqrt($mm); $i++){
    if($mm % $i == 0){
        $mm /= $i;
        $f[] = $i;
    }
    $f[] = $mm;
}
for($i = 0; $i <= count($f); $i++){
    for($j = 0; $j < $lim; $j++){
        $dp[$i][$j] = 0;
    }
}
$dp[0][1] = 1;
for($i = 0; $i < count($f); $i++){
    for($j = 0; $j < $lim; $j++){
        $dp[$i+1][$j] += $dp[$i][$j];
        if($j * $f[$i] < $lim){
            $dp[$i+1][$j * $f[$i]] += $dp[$i][$j];
        }
    }
}
foreach($dp[count($f)] as $k => $v){
    if($v){
        if($k < $m / $n){
            $array[] = $k;
        }
    }
}
echo max($array);

function o($val){
    $trace = debug_backtrace();
    echo $trace[0]['line'].")";
    if(is_array($val)){
        if(count($val) == 0){
            echo "empty array";
        }elseif(!is_array(current($val))){
            echo "array:";
            echo implode(" ", $val)."\n";
        }else{
            echo "array:array\n";
            foreach($val as $row){
                echo implode(" ", $row)."\n";
            }
        }
    }else{
        echo $val."\n";
    }
}