Pagini recente » Cod sursa (job #2124183) | Cod sursa (job #110631)
Cod sursa(job #110631)
#include <stdio.h>
int n, v[100000], x[1000000], prim[50000], max, nr, sol;
void citire()
{
freopen("pairs.in","r",stdin);
freopen("pairs.out","w",stdout);
scanf("%d",&n);
int i;
for (i = 1; i <= n; i++)
{
scanf("%d",v+i);
if (max < v[i]) max = v[i];
}
}
void ciur()
{
int i, j;
i = 2;
j = 2;
while (i * j++ <= max) x[i * j] = 1;
prim[++nr] = 2;
for (i = 3; i <= max; i++)
if (!x[i])
{
prim[++nr] = i;
j = 2;
while (i * j++ <= max) x[i * j] = 1;
}
}
int main()
{
citire();
ciur();
int i, j, k, cnt;
for (i = 2; i <= max; i++)
{
x[i] = 0;
for (j = 1; j <= n; j++)
if (v[j] % i == 0) x[i]++;
if (x[i])
{
j = 1;
k = i;
cnt = 0;
while (k > 1)
{
if (k % prim[j] == 0)
{
while (k % prim[j] == 0) k /= prim [j];
cnt++;
}
j++;
}
if (cnt % 2 == 0) sol -= x[i];
else sol += x[i];
}
}
printf("%d\n",sol);
return 0;
}