#include <iostream>
#include <vector>
using namespace std;
const int MAX = 500005;
vector<int> p[MAX];
int cnt[MAX], mul[MAX], a[MAX], has[MAX];
long long ans;
void add(int val, int sign)
{
	for (int mask = 0; mask < (1 << p[val].size()); mask++)
	{
		if (!mask)
			mul[mask] = 1;
		else
			mul[mask] = mul[mask & (mask - 1)] * p[val][__builtin_ctz(mask)];
		if (sign < 0)
			cnt[mul[mask]]--;
		if (__builtin_popcount(mask) & 1)
			ans -= cnt[mul[mask]] * sign;
		else
			ans += cnt[mul[mask]] * sign;
		if (sign > 0)
			cnt[mul[mask]]++;
	}
}
int main()
{
	ios::sync_with_stdio(false);
	for (int i = 2; i < MAX; i++)
		if (p[i].empty())
			for (int j = i; j < MAX; j += i)
				p[j].push_back(i);
	int n, q;
	cin >> n >> q;
	for (int i = 0; i < n; i++)
	{
		cin >> a[i];
		has[i] = 1;
	}
	while (q--)
	{
		int x;
		cin >> x;
		x--;
		add(a[x], has[x]);
		has[x] *= -1;
		cout << ans << '\n';
	}
	return 0;
}
