Pagini recente » Cod sursa (job #1049831) | Cod sursa (job #1189036) | Cod sursa (job #2988629) | Cod sursa (job #669846) | Cod sursa (job #2604289)
#include <fstream>
using namespace std;
ifstream in("pairs.in");
ofstream out("pairs.out");
int m,maxi,ok[1000005],nr[1000005];
long long n,k,s;
bool f[1000005],p[1000005];
int main()
{ in>>n;
for(int i=1;i<=n;i++)
in>>m,f[m]=1,maxi=max(maxi,m);
for(int i=2;i<=1000000;i++)
if(!p[i])
{ nr[i]=1;
ok[i]=0;
for(int j=2*i;j<=1000000;j+=i)
{ p[j]=1;
nr[j]++;
if((j/i)%i==0)
ok[j]=1;
}
}
for(int i=2;i<=maxi;i++)
{ if(ok[i])
continue;
k=0;
for(int j=i;j<=maxi;j+=i)
k+=f[j];
if(nr[i]%2==1)
s+=1LL*k*(k-1)/2;
else
s-=1LL*k*(k-1)/2;
}
out<<1LL*n*(n-1)/2-s;
in.close();
out.close();
return 0;
}