Pagini recente » Cod sursa (job #1953256) | Cod sursa (job #3201116) | Cod sursa (job #2932934) | Cod sursa (job #499773) | Cod sursa (job #335285)
Cod sursa(job #335285)
#include<stdio.h>
int a[1000010],Max,n,res;
void solve(){
int i,j,m;
if(a[1]==-1)res+=n;
for(i=2;i<=Max;i++)
if(a[i]==0){m=0;
for(j=2*i;j<=Max;j+=i)
if(a[j]<0){a[j]--;m++;}
else
a[j]=1;
res+=(m*(m-1))/2;}
else
if(a[i]==-1){
m=1;
for(j=2*i;j<=Max;j+=i)
if(a[j]==0)a[j]=1;
else
if(a[j]<0){m++;a[j]--;}
res+=(m*(m-1))/2;
}
else
if(a[i]<-2){
m=1;
for(j=2*i;j<=Max;j+=i)
if(a[j]==0)a[j]=1;
else
if(a[j]<0){m++;a[j]--;}
m=(m*(m-1))/2;
m*=-a[i]-1;
res-=m;
}
}
int main(){
freopen("pairs.in","r",stdin);
freopen("pairs.out","w",stdout);
scanf("%d",&n);
int x,i;
for(i=1;i<=n;++i)
{scanf("%d",&x);
a[x]=-1;
if(x>Max)Max=x;
}
solve();
n=(n*(n-1))/2;
n-=res;
printf("%d",n);
return 0;}