Pagini recente » Cod sursa (job #2511466) | Cod sursa (job #205668) | Cod sursa (job #1608096) | Cod sursa (job #1752076) | Cod sursa (job #882831)
Cod sursa(job #882831)
#include<cstdio>
#include<fstream>
#include<bitset>
#define nmax 1000100
using namespace std;
long long v[nmax],sol,nr,mx,n;
ifstream cin("pairs.in");
ofstream cout("pairs.out");
bitset<nmax> M;
int main()
{
long long i,j,x;
//freopen("pairs.in","r",stdin);
//freopen("pairs.out","w",stdout);
//scanf("%lld",&n);
cin>>n;
sol=n*(n-1)/2;
for(;n;n--)
{
cin>>x;
M[x]=1;
if(x>mx)mx=x;
}
for(i=2;i<=mx;i++)
if(!v[i])
for(j=i;j<=mx;j+=i)
v[j]++;
for(i=2;i*i<=mx;i++)
for(j=i*i;j<=mx;j+=i*i)
v[j]=-1;
for(i=2;i<=mx;i++)
if(v[i]!=-1)
{
nr=0;
for(j=i;j<=mx;j+=i)
if(M[j])nr++;
if(v[i]%2)sol-=(nr*(nr-1))/2;
else sol+=(nr*(nr-1))/2;
}
cout<<sol<<"\n";
return 0;
}