#include #define F first #define S second #define MP make_pair #define pb push_back #define endl '\n' using namespace std; typedef long long LL; typedef pair< int, int > P; typedef pair< LL, LL > LP; typedef pair< int, P > iP; typedef pair< P, P > PP; static const int INF = INT_MAX; static const LL LINF = LLONG_MAX; static const int MIN = INT_MIN; static const LL LMIN = LLONG_MIN; static const int MOD = 1000000007; int dx[] = {0, -1, 1, 0}; int dy[] = {-1, 0, 0, 1}; int main() { ios::sync_with_stdio(false); cin.tie(0); int prime[100005] = {}; for( int i = 2; i <= 100004; ++i ) { if( !prime[i] ) { for( int j = i + i; j <= 100004; j += i ) prime[j] = 1; } } vector< int > fuct; int n, k; cin >> n >> k; int tmp = n; int pos = 2; while( n > 1 ) { if( prime[pos] ) ++pos; else { if( !( n % pos ) ) fuct.pb( pos ), n /= pos; else ++pos; } } sort( fuct.begin(), fuct.end() ); cout << tmp / fuct[0] << endl; return 0; }