#include <bits/stdc++.h>
using namespace std;
const int max_n = 500010;
long long ans = 0;
vector<int> vec[max_n];
int a[max_n];
bool mark[max_n];
int t[max_n];
void add(int x) {
  for (int i = 0; i < (1 << vec[x].size()); i++) {
    long long num = 1;
    for (int j = 0; j < vec[x].size(); j++)
      if (i & (1 << j)) num *= vec[x][j];
    ans += (__builtin_popcount(i) % 2 ? -t[num] : t[num]);
    t[num]++;
  }
}
void del(int x) {
  for (int i = 0; i < (1 << vec[x].size()); i++) {
    long long num = 1;
    for (int j = 0; j < vec[x].size(); j++)
      if (i & (1 << j)) num *= vec[x][j];
    t[num]--;
    ans -= (__builtin_popcount(i) % 2 ? -t[num] : t[num]);
  }
}
int main() {
  ios_base::sync_with_stdio(false);
  for (int i = 2; i < max_n; i++)
    if (!mark[i])
      for (int j = i; j < max_n; j += i) {
        vec[j].push_back(i);
        mark[j] = true;
      }
  fill(mark, mark + max_n, 0);
  int n, q;
  cin >> n >> q;
  for (int i = 0; i < n; i++) cin >> a[i];
  for (int i = 0; i < q; i++) {
    int x;
    cin >> x;
    if (mark[x])
      del(a[x - 1]);
    else
      add(a[x - 1]);
    mark[x] = !mark[x];
    cout << ans << "\n";
  }
  return 0;
}
