Cod sursa(job #238252)

Utilizator cosmin79Carabet Cosmin Andrei cosmin79 Data 1 ianuarie 2009 13:53:28
Problema Pairs Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <stdio.h>
int comb2(int n)
{
	return n*(n-1)/2;
}
bool prim(int n)   
{   
    int i;   
    if (n<2)   
        return false;   
    if (n==2)   
        return true;   
    if (n%2==0)   
        return false;   
    for (i=3; i*i<=n; i+=2)   
        if (n%i==0)   
            return false;   
    return true;   
}   
int main()
{
	freopen("pairs.in","r",stdin);
	freopen("pairs.out","w",stdout);
	int n,i,cont,a[100005],j,nrdiv,perechi,max=0;
	scanf("%d",&n);
	for (i=1; i<=n; i++)
		scanf("%d",&a[i]);
	perechi=comb2(n);
	for (i=1; i<=n; i++)
		if (a[i]>max)
			max=a[i];
	for (i=2; i<=max; i++)
	{
		nrdiv=0;
		for (j=1; j<=n; j++)
			if (a[j]%i==0)
				nrdiv++;
	if (prim(i))
		perechi-=comb2(nrdiv);
	else
		perechi+=comb2(nrdiv);
	}
	printf("%d",perechi);
	return 0;
}