module main; // https://yukicoder.me/problems/no/136/editorial より // 素因数分解 import std; // https://qiita.com/LorseKudos/items/9eb560494862c8b4eb56 より // 整数nの約数を列挙する long[] divisors(long n) { long[] lowerDivisors = [1], upperDivisors = [n]; if (n % 2 == 0) { lowerDivisors ~= 2; upperDivisors ~= n / 2; } long i = 3; for (; i * i < n; i += 2) { if (n % i != 0) continue; lowerDivisors ~= i; upperDivisors ~= n / i; } if (i * i == n) lowerDivisors ~= i; return lowerDivisors ~ upperDivisors.reverse; } void main() { // 入力 int N, K; readln.chomp.formattedRead("%d %d", N, K); // 答えの計算 auto div = divisors(N); // 答えの出力 writeln(div[$ - 2]); }