func_code_string: #include <bits/stdc++.h>   using namespace std;   const int N = 15000001;   int64_t primes[N];   int64_t gcd(int64_t a, int64_t b) {     if (a == 0)       return b;     else       return gcd(b % a, a);   }   int64_t Power(int64_t base, int64_t e) {     if (e == 0) return 1;     int64_t ans = base;     e--;     while (e) {       if (e & 1) ans = (ans * base);       base = (base * base);       e >>= 1;     }     return (ans);   }   void sieve() {     for (int64_t i = 2; i <= N; i++) {       if (primes[i] == -1) {         for (int64_t j = i; j <= N; j += i) primes[j] = i;       }     }   }   int main() {     for (int64_t i = 0; i < N; i++) {       primes[i] = -1;     }     ios::sync_with_stdio(false);     cin.tie(0);     cout.tie(0);     sieve();     map<int64_t, int64_t> mp;     int64_t n;     cin >> n;     int64_t a[n];     int64_t tmp;     for (int64_t i = 0; i < n; i++) cin >> a[i];     int64_t ggcd;     ggcd = a[0];     for (int64_t i = 0; i < n; i++) {       ggcd = gcd(ggcd, a[i]);     }     int64_t ggcd2 = 1;     for (int64_t i = 0; i < n; i++) {       a[i] = a[i] / ggcd;     }     for (int64_t i = 0; i < n; i++) {       tmp = a[i];       while (tmp > 1) {         int64_t y = primes[tmp];         while (tmp % y == 0) {           tmp = tmp / y;         }         mp[y]++;       }     }     int64_t freq = 0;     int64_t val = ggcd;     for (auto kk : mp) {       if (freq <= kk.second) {         val = kk.first;         freq = kk.second;       }     }     if (freq) {       cout << (n - freq) << endl;     } else       cout << -1 << endl;   }   