#include <bits/stdc++.h>
using namespace std;
const int MOD(1000000007);
const int INF((1 << 30) - 1);
const int MAXN(200005);
const int MAXP(500005);
vector<int> p[MAXP];
int a[MAXN], in[MAXN], cnt[MAXP];
long long ans = 0;
void update(int x, int c) {
  int n = p[x].size();
  for (int i = 0; i < 1 << n; i++) {
    int num = 1, nbit = 0;
    for (int j = 0; j < n; j++) {
      if (i & (1 << j)) {
        nbit++;
        num *= p[x][j];
      }
    }
    if (c < 0) cnt[num]--;
    if (nbit & 1)
      ans -= cnt[num] * c;
    else
      ans += cnt[num] * c;
    if (c > 0) cnt[num]++;
  }
}
int main() {
  for (int i = 2; i <= 500000; i++) {
    if (p[i].size() == 0) {
      for (int j = i; j <= 500000; j += i) p[j].push_back(i);
    }
  }
  int n, q;
  scanf("%d%d", &n, &q);
  for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
  while (q--) {
    int x;
    scanf("%d", &x);
    if (!in[x])
      update(a[x], +1);
    else
      update(a[x], -1);
    in[x] ^= 1;
    printf("%I64d\n", ans);
  }
}
