func_code_string: #include <bits/stdc++.h>   using namespace std;   long long gcd(long long a, long long b) { return !b ? a : gcd(b, a % b); }   long long lcm(long long a, long long b) { return (a / gcd(a, b)) * b; }   enum dir {     DOWN = 0,     UP,     RIGHT,     LEFT,     DOWN_RIGHT,     DOWN_LEFT,     UP_RIGHT,     UP_LEFT   };   int dir_r[] = {1, -1, 0, 0, 1, 1, -1, -1};   int dir_c[] = {0, 0, 1, -1, 1, -1, 1, -1};   bool p(long long s) {     if (s == 1 || (s % 2 == 0 && s != 2)) return 0;     for (int i = 2; i <= sqrt(s); i++) {       if (s % i == 0) return 0;     }     return 1;   }   int main() {     ios::sync_with_stdio(0);     cin.tie(0);     cout.tie(0);     long long n;     cin >> n;     if (p(n)) return cout << 1, 0;     long long ans = 1e12;     for (long long i = 1; i <= sqrt(n); i++) {       if (n % i == 0) {         if (p(i)) {           ans = min(ans, i);         }         if (p(n / i)) ans = min(ans, i);       }     }     if (ans == 1e12)       cout << 0;     else {       n -= ans;       cout << n / 2 + 1;     }     return 0;   }   