Pagini recente » Cod sursa (job #1293295) | Cod sursa (job #2945948) | Cod sursa (job #888849) | Cod sursa (job #620444) | Cod sursa (job #335487)
Cod sursa(job #335487)
#include<stdio.h>
long int a[1000010],viz[1000010],i,j,Max,n,m,res;
void ciur(){
long int i,j;
a[1]=-1;
for(i=2;i<=Max;i++)
if(a[i]==0)
for(j=i;j<=Max;j+=i)
if(a[j]!=-1){
a[j]++;
if((j/i)%i==0)
a[j]=-1;}
}
int main(){
freopen("pairs.in","r",stdin);
freopen("pairs.out","w",stdout);
scanf("%ld",&n);
for(i=1;i<=n;i++)
{scanf("%ld",&j);
viz[j]=1;
if(j>Max)Max=j;
}
ciur();
for(i=2;i<=Max;i++){
m=0;
if(a[i]>0){
for(j=i;j<=Max;j+=i)
if(viz[j])m++;
if(a[i]%2)res+=(m*(m-1))/2;
else
res-=(m*(m-1))/2;}
}
n=n*(n-1)/2;
n-=res;
printf("%ld",n);
return 0;}