#include #include using namespace std; #define rep(i,a,b) for(int i=a;i> n >> k; if (n%2 == 0) { cout << n / 2 << endl; return 0; } // 素数の配列 const int max = 100000; int *p; p = (int *)malloc(sizeof(int)*max); rep(i, 0, max) p[i] = i; rep(i, 2, 315) for (j = 2; i*j < max; j++) p[i*j] = 0; vector prime; rep(i, 2, max) if (p[i]) prime.push_back(p[i]); free(p); // nを割り切れる素数を調べる int gcd = 1, t; for (i = 0; prime[i] <= n; i++) { if ( n%prime[i] == 0 && n/prime[i] > gcd) gcd = n / prime[i]; } cout << gcd << endl; return 0; }