Pagini recente » Cod sursa (job #1315390) | Cod sursa (job #1836877) | Cod sursa (job #3143820) | Cod sursa (job #2861836) | Cod sursa (job #111628)
Cod sursa(job #111628)
#include<stdio.h>
int ap[2000100],div[2000100];
int main(){
freopen("pairs.in","r",stdin);
freopen("pairs.out","w",stdout);
int n,i,j,k,max;
long long apar,res=0;
scanf("%d",&n);
max=0;
for(i=0;i<n;++i){
scanf("%d",&j);
ap[j]=1;
if(j>max)
max=j;
}
for(i=2;i<=max;++i){
if(div[i]>0){
if(div[i]%2){
apar=0;
for(j=i;j<=max;j+=i){
if(ap[j])
++apar;
}
res+=(apar*(apar-1))/2;
}
else{
apar=0;
for(j=i;j<=max;j+=i){
if(ap[j])
++apar;
}
res-=(apar*(apar-1))/2;
}
}
if(div[i]==0){
apar=0;
for(j=i;j<=max;j+=i){
++div[j];
if(ap[j])
++apar;
}
for(j=i*i;j<=max;j*=i){
for(k=j;k<=max;k+=j)
div[k]=-10000000;
}
res+=(apar*(apar-1))/2;
}
}
apar=((long long)(n))*(n-1);
apar/=2;
res=apar-res;
printf("%lld\n",res);
fclose(stdin);
fclose(stdout);
return 0;
}