Cod sursa(job #110628)

Utilizator gabitzish1Gabriel Bitis gabitzish1 Data 27 noiembrie 2007 08:46:05
Problema Pairs Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <stdio.h>
int n, v[100000], x[100000], prim[5000], 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;
}