Pagini recente » Cod sursa (job #2307268) | Cod sursa (job #1235431) | Cod sursa (job #2162949) | Cod sursa (job #1729198) | Cod sursa (job #2642193)
#include <iostream>
#include <cstdio>
#include <vector>
using namespace std;
const int MAXCF = 350;
const int VMAX = 1000;
const int NMAX = 500;
const int BASE = 10000;
int frecv[VMAX + 5], nr_multipli[VMAX + 5];
int verif[VMAX + 5], nr_div[VMAX + 5];
bool ciur[VMAX + 5];
void precalc() {
ciur[0] = ciur[1] = true;
for(int i = 1; i <= VMAX; i++)
verif[i] = 1;
for(int i = 2; i <= VMAX; i++)
if(!ciur[i])
for(int j = i; j <= VMAX; j += i) {
if(j > i)
ciur[j] = true;
verif[j] *= i;
nr_div[j]++;
}
}
int main() {
freopen("indep.in", "r", stdin);
freopen("indep.out", "w", stdout);
int n, x, maxim = 0;
precalc();
scanf("%d", &n);
for(int i = 1; i <= n; i++) {
scanf("%d", &x);
frecv[x]++;
maxim = max(maxim, x);
}
for(int i = 1; i <= maxim; i++)
for(int j = i; j <= maxim; j += i)
nr_multipli[i] += frecv[j];
int sol = 0;
for(int i = 1; i <= maxim; i++)
if(verif[i] == i)
if(nr_div[i] % 2 == 0)
sol += (1 << nr_multipli[i]) - 1;
else
sol -= (1 << nr_multipli[i]) - 1;
printf("%d", sol);
return 0;
}