Pagini recente » Cod sursa (job #2791879) | Cod sursa (job #2504591) | Cod sursa (job #10744) | Cod sursa (job #2673214) | Cod sursa (job #214465)
Cod sursa(job #214465)
#include<stdio.h>
#define max(a,b) a>b?a:b
#define N 1000001
int i,j,x,maxim,div[N],w[N];
long long n,r,y;
char v[N],p[N];
int main(){
freopen("pairs.in", "rt", stdin);
freopen("pairs.out", "wt", stdout);
scanf("%lld",&n);
for(i=1;i<=n;++i){
scanf("%d",&x);
maxim=max(maxim,x);
v[x]=1;
}
for(i=2;i*i<=maxim;++i)
if(!p[i])
for(j=2;j*i<=maxim;++j)
p[j*i]=1;
p[1]=1;
for(i=1;i<=maxim;++i){
for(j=1;i*j<=maxim;++j){
if(v[i*j]==1)
++div[i] ;
if(!p[i])
if(j%i!=0)
++w[i*j];
else
w[i*j]=-N;
}
}
for(i=2;i<=maxim;++i){
y=div[i];
y=(y*(y+1))/2;
if(w[i]>0)
if(w[i]%2==0)
r-=y;
else
r+=y;
}
printf("%lld\n",(n*(n+1))/2-r);
return 0;
}