Pagini recente » Cod sursa (job #371610) | Cod sursa (job #3158756) | Cod sursa (job #242773) | Cod sursa (job #2581950) | Cod sursa (job #3291902)
#include <bits/stdc++.h>
using namespace std;
ifstream f("pairs.in");
ofstream g("pairs.out");
int F[10001],n,A[10001],v[25],sol,W[10001],pmax;
int c[10001];
int main()
{ f>>n;
for(int i=1;i<=n;i++) f>>A[i];
for(int i=2;i<=1001;i++)
if(!c[i]) for(int j=i;j<=1001;j+=i) c[j]=i;
sol=n*n;
for(int i=1;i<=n;i++)
{ int x=A[i];
int k=0;
while(x>1)
{ int y=c[x];
v[++k]=y;
while(c[x]==y) x=x/y;
}
for(int j=1;j<(1<<k);j++)
{ int p=1,nr=0;
for(int l=0;l<k;l++)
if((1<<l)&j) p=p*v[l+1],nr++;
F[p]++;
W[p]=nr;
pmax=max(p,pmax);
}
}
for(int i=1;i<=pmax;i++)
if(W[i])
{ if(W[i]%2) sol-=(F[i]*F[i]);
else sol+=(F[i]*F[i]);
}
g<<sol/2<<'\n';
return 0;
}