Pagini recente » Cod sursa (job #1153927) | Cod sursa (job #501619) | Cod sursa (job #694329) | Cod sursa (job #1490941) | Cod sursa (job #1410387)
#include<cstdio>
int n,i,j,a,vmax,v[100100],x[1001000],y[1001000];
long long s;
FILE *f,*g;
int maxim(int a,int b){
if(a>b)
return a;
return b;
}
int main(){
f=fopen("pairs.in","r");
g=fopen("pairs.out","w");
fscanf(f,"%d",&n);
for(i=1;i<=n;i++){
fscanf(f,"%d",&v[i]);
vmax=maxim(vmax,v[i]);
x[ v[i] ]=1;
}
for(i=2;i<=vmax;i++){
if(y[i]>1){
a=0;
for(j=i;j<=vmax;j+=i){
if(x[j])
a++;
}
if(y[i]%2)
s-=1LL*a*(a-1)/2;
else
s+=1LL*a*(a-1)/2;
}
if(y[i]==0){
a=0;
for(j=i;j<=vmax;j+=i){
if(x[j])
a++;
}
for(j=i+i;j<=vmax;j+=i){
if(y[j]!=-1)
y[j]++;
if( j % (i*i) == 0 )
y[j]=-1;
}
s+=1LL*(a-1)*a/2;
}
}
fprintf(g,"%lld",1LL*n*(n-1)/2-s);
fclose(f);
fclose(g);
return 0;
}