Pagini recente » Cod sursa (job #2889682) | Cod sursa (job #2575683) | Cod sursa (job #2919534) | Borderou de evaluare (job #788045) | Cod sursa (job #1940256)
#include <fstream>
#define maxN 1000005
using namespace std;
int p[maxN],ap[maxN];
int v[maxN];
int n,i,j,x,val;
long long sol;
int main()
{
ifstream f("pairs.in");
ofstream g("pairs.out");
f>>n;
for(i=1; i<=n; i++)
{
f>>j;
ap[j]++;
}
for(i=2; i<=maxN; i++)
if(!p[i])
for(j=i; j<=maxN; j+=i)
p[j]=i;
v[1]=1;
for(i=2; i<=maxN; i++)
if(p[i]!=p[i/p[i]])
v[i]=(-1)*v[i/p[i]];
for(i=1; i<=maxN; i++)
if(v[i])
{
for(j=i+i; j<=maxN; j+=i)
ap[i]+=ap[j];
sol+=v[i]*(ap[i]*(ap[i]-1LL))/2;
}
g<<sol<<'\n';
f.close(); g.close();
return 0;
}