Pagini recente » Cod sursa (job #2653741) | Cod sursa (job #216237) | Cod sursa (job #423275) | Cod sursa (job #850251) | Cod sursa (job #380408)
Cod sursa(job #380408)
#include<stdio.h>
#include<algorithm>
#include<math.h>
using namespace std;
int n,i,j,x[1000010],a[1000010],ma,rez;
int main()
{
freopen("pairs.in","r",stdin);
freopen("pairs.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;++i) { scanf("%d",&j);
ma=max(ma,j);
a[j]=1;
}
for(i=1;i<=n;++i)
for(j=i;j<=ma;j+=i) if(a[j]) x[i]++;
for(i=2;i<=ma;++i) { j=i;
int ok=0,nr=0;
while(!j%2&&ok<=1) { j/=2;
ok++;
nr++;
}
if(ok<2)
{ int m=int(sqrt(i));
for(int k=3;k<=m&&ok<2;k+=2) { ok=0;
while(!j%k&&ok<2)
{ j/=k;
ok++;
nr++;
}
}
if(j>1) nr++;
if(ok<2)
{
if(nr%2) rez+=(x[i]*(x[i]-1))/2;
else rez-=(x[i]*(x[i]-1))/2;
}
}
}
printf("%d\n",((n*(n-1))/2)-rez);
fclose(stdin);
fclose(stdout);
return 0;
}