Cod sursa(job #245130)

Utilizator cosmin79Carabet Cosmin Andrei cosmin79 Data 16 ianuarie 2009 21:50:52
Problema Pairs Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <stdio.h>
#define T 45000   
int pr[45000],k=0;   
void ciur()   
{   
    int i,j;   
    bool c[T]={false};   
    for (i=2; i*i<T; i++)   
    {   
        if (!c[i])   
            for (j=i*i; j<T; j+=i)   
                c[j]=true;   
    }   
    for (i=2; i<T; ++i)   
        if (!c[i])   
            pr[++k]=i;   
}   

int main()
{
	freopen("pairs.in","r",stdin);
	freopen("pairs.out","w",stdout);
	int n,i,a[100001],j,s=0,comb,max=0,nrdiv;
	scanf("%d",&n);
	ciur();
	for (i=1; i<=n; i++)
	{
		scanf("%d",&a[i]);
		if (a[i]>max)
			max=a[i];
	}
	comb=n*(n-1)/2;
	for (j=1; pr[j]*pr[j]<=max; j++)
	{
		nrdiv=0;
	for (i=1; i<=n; i++)
		if (a[i]%pr[j]==0)
			nrdiv++;
	comb-=nrdiv*(nrdiv-1)/2;
	}
	printf("%d",comb);
	return 0;
}