#include <bits/stdc++.h>
using namespace std;
template <class T>
T abs(T x) {
  return x > 0 ? x : -x;
}
int m;
int n;
int d[500500];
void calc(int n) {
  for (int i = 2; i < n; i++)
    if (d[i] == 0)
      for (int j = i; j < n; j += i) d[j] = i;
}
vector<int> get(int x) {
  vector<int> v;
  while (x > 1) {
    int o = d[x];
    v.push_back(o);
    while (x % o == 0) x /= o;
  }
  return v;
}
vector<int> v[200500];
int used[200500];
long long col;
int cc[500500];
int sum[500500];
void ch(int p, int f) {
  for (int i = 0; i < (((int)(v[p]).size())); i++) {
    int x = v[p][i];
    int c = sum[x];
    if (!f) c--;
    if ((f + cc[x]) % 2)
      col += c;
    else
      col -= c;
    if (f)
      sum[x]++;
    else
      sum[x]--;
  }
}
void add(int p) { ch(p, 1); }
void del(int p) { ch(p, 0); }
int main() {
  cin >> n >> m;
  calc(500500);
  for (int i = 0; i < (n); i++) {
    int x;
    scanf("%d", &x);
    vector<int> tmp = get(x);
    for (int mask = 0; mask < (1 << ((int)(tmp).size())); mask++) {
      int o = 1;
      for (int j = 0; j < (((int)(tmp).size())); j++)
        if (mask & (1 << j)) o *= tmp[j];
      v[i].push_back(o);
      cc[o] = __builtin_popcount(mask);
    }
  }
  for (int i = 0; i < (m); i++) {
    int t;
    scanf("%d", &t);
    t--;
    if (used[t]) {
      del(t);
      used[t] = 0;
    } else {
      add(t);
      used[t] = 1;
    }
    cout << col << "\n";
  }
  return 0;
}
