#if !defined(__clang__) && defined(__GNUC__) #include #else #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #endif // !defined(__clang__) && defined(__GNUG__) #include #include #include #include #include using namespace std; /* エラトステネスのふるい O(n log log n) だいたい線形。 10万とかは余裕 */ template std::vector sieve(T n) { std::vector primes; std::vector is_prime(n, true); is_prime[0] = is_prime[1] = false; for (T i = 2; i <= n; ++i) { if (is_prime[i]) { primes.push_back(i); for (T j = 2 * i; j <= n; j += i) { is_prime[j] = false; } } } return primes; } /** 素因数分解 */ template std::map& factor( T n, const std::vector& primes, std::map& ret) { auto f = primes.begin(); while (n > 1) { while (n % *f == 0) { ret[*f] = ret[*f] + 1; n /= *f; } ++f; } return ret; } int main() { int64_t N; std::cin >> N; for (int64_t i = 3; i <= sqrt(N); ++i) { if (N % i == 0) { std::cout << i << std::endl; return 0; } } if (N % 2 == 0 && N / 2 != 2) { std::cout << N/2 << std::endl; } else { std::cout << N << std::endl; } return 0; }