Pagini recente » Cod sursa (job #2202338) | Cod sursa (job #838597) | Cod sursa (job #1737660)
#include<cstdio>
#include<algorithm>
#define MAXVAL 1000010
using namespace std;
bool seen[MAXVAL],square[MAXVAL];
int prime[MAXVAL];
int main(){
freopen("pairs.in","r",stdin);
freopen("pairs.out","w",stdout);
int n,biggest=0,x,i,j;
long long answer=0;
scanf("%d",&n);
for(i=1;i<=n;i++){
scanf("%d",&x);
seen[x]=1;
biggest=max(biggest,x);
}
for(i=2;i<=biggest;i++)
if(!prime[i])
for(j=i;j<=biggest;j+=i){
prime[j]++;
if(1LL*i*i<=biggest&&j%(i*i)==0)
square[j]=1;
}
for(i=1;i<=biggest;i++)
if(!square[j]){
x=0;
for(j=i;j<=biggest;j+=i)
if(seen[j])
x++;
if(prime[i]&1==1)
answer=answer-1LL*x*(x-1);
else
answer=answer+1LL*x*(x-1);
}
answer/=2;
printf("%lld",answer);
return 0;
}