Pagini recente » Cod sursa (job #1786477) | Cod sursa (job #2352186) | Cod sursa (job #2465758) | Cod sursa (job #2548509) | Cod sursa (job #1701198)
#include<fstream>
using namespace std;
ifstream f("pairs.in");
ofstream g("pairs.out");
int n,i,j,maxi,x,nr,d[1<<20];
long long sol;
bool v[1<<20];
int main()
{
f>>n;
sol=1LL*n*(n-1)/2;
for(i=1;i<=n;++i)
{
f>>x;
maxi=max(maxi,x);
v[x]=1;
}
for(i=2;i<=maxi;++i)
if(!d[i])
for(j=i;j<=maxi;j+=i) d[j]++;
for(i=2;i*i<=maxi;++i)
for(j=i*i;j<=maxi;j+=i*i) d[j]=-1;
for(i=2;i<=maxi;++i)
if(d[i]!=-1)
{
nr=0;
for(j=i;j<=maxi;j+=i)
if(v[j]) ++nr;
(d[i]&1)?sol-=1LL*nr*(nr-1)/2:sol+=1LL*nr*(nr-1)/2;
}
g<<sol<<'\n';
return 0;
}