#include #include #include using namespace std; int n, k; vector vec[100005]; int prime[100005]; multiset S[100005]; int main(void) { for(int i = 2; i < 100005; i++){ if(prime[i]) continue; for(int j = 2*i; j < 100005; j += i){ prime[j] = i; } } cin >> n >> k; for(int i = 1; i <= n; i++){ for(int j = 1; i*j <= n; j++) vec[i*j].push_back(i); } for(int i = 2; i <= n; i++){ int t = i; while(1){ int p = prime[t]; if(p == 0){ S[i].insert(t); break; } else{ S[i].insert(p); t /= p; } } } int ans = 0, mx = 0; for(int i = 1; i < n; i++){ int cnt = 0, t = n; for(auto x : S[i]){ if(t % x == 0) cnt++, t /= x; } if(cnt < k) continue; if(mx < vec[i].size()){ mx = vec[i].size(); ans = i; } } cout << ans << endl; return 0; }