import std.stdio;
import std.algorithm;
import std.range;
import std.conv;
import std.format;
import std.array;
import std.math;
import std.string;
import std.container;
import std.numeric;

void main() {
  int N, M;
  readlnTo(N, M);

  long ans = 1;
  for (long i = 1; i * i <= M; i++) {
    if (M % i != 0)
      continue;

    if (M >= i * N)
      ans = max(ans, i);

    if (M >= (M / i) * N)
      ans = max(ans, M / i);
  }

  ans.writeln;
}

// helpers
void readlnTo(T...)(ref T t) {
  auto s = readln.split;
  assert(s.length == t.length);
  foreach(ref ti; t) {
    ti = s[0].to!(typeof(ti));
    s = s[1..$];
  }
}
