#include using namespace std; using ll = long long; #define FOR(i,a,b) for(ll i=(a);i<(b);++i) #define ALL(v) (v).begin(), (v).end() #define p(s) cout<<(s)< factorize(ll n){ map mp; ll sq = sqrt(n); FOR(i, 2, sq+1){ while(n%i==0){ mp[i]++; n/=i; } } // 残り if(n!=1){ mp[n]++; } return mp; } // 素因数の個数 (重複あり) ex. {2, 2, 2, 3} ll prime_factor_num(ll a){ ll count = 0; auto mp = factorize(a); for(auto p : mp){ count += p.second; } return count; } // a, bの共通の素因数の数 ll common(ll a, ll b){ ll g = gcd(a, b); return prime_factor_num(g); } // 約数の個数 ll divisor_num(ll a){ auto mp = factorize(a); ll ret = 1; for(auto p : mp){ ret *= (p.second + 1); } return ret; } int main(){ cin.tie(0); ios::sync_with_stdio(false); // input ll N, K; cin >> N >> K; ll max_divisor_num = 0; ll max_M; FOR(i, 1, N){ if(common(i, N)>=K){ ll div = divisor_num(i); if(div > max_divisor_num){ max_divisor_num = div; max_M = i; } } } p(max_M); return 0; }