func_code_string: #include <bits/stdc++.h>   using namespace std;   const int max_n = 200002, inf = 1111111111;   const int max_p = 500005;   int n, q, a[max_n], z[max_p], cnt[max_p], used[max_n];   long long ans;   int get_cnt(int x) {     int res = 0;     for (int i = 1; i * i <= x; ++i) {       if (x % i == 0) {         int d = i;         res += cnt[d] * z[d];         d = x / i;         if (i < d) {           res += cnt[d] * z[d];         }       }     }     return res;   }   void add(int x, int f) {     for (int i = 1; i * i <= x; ++i) {       if (x % i == 0) {         int d = i;         cnt[d] += f;         d = x / i;         if (i < d) {           cnt[d] += f;         }       }     }   }   int main() {     for (int i = 2; i < max_p; ++i) {       int x = i;       for (int j = 2; j * j <= x; ++j) {         if (x % j == 0) {           x /= j;           ++z[i];           if (x % j == 0) {             z[i] = 0;             x = 0;             break;           }         }       }       if (x == 0) {         continue;       }       if (x > 1) {         ++z[i];       }       if (z[i] % 2 == 1) {         z[i] = 1;       } else {         z[i] = -1;       }     }     scanf( %d%d , &n, &q);     for (int i = 0; i < n; ++i) {       scanf( %d , &a[i]);     }     int sz = 0;     while (q--) {       int x;       scanf( %d , &x);       --x;       int res;       if (used[x]) {         add(a[x], -1);         used[x] = 0;         --sz;         ans -= (sz - get_cnt(a[x]));       } else {         used[x] = 1;         ans += sz - get_cnt(a[x]);         add(a[x], 1);         ++sz;       }       printf( %I64d n , ans);     }     return 0;   }   