Pagini recente » Cod sursa (job #1221398) | Cod sursa (job #1999224) | Cod sursa (job #2869084) | Cod sursa (job #1425850) | Cod sursa (job #1700947)
#include <cstdio>
using namespace std;
const int NM = 1e6+5;
int i,j, x,n, prime[NM], cnt, MX;
bool fact2[NM], a[NM];
long long ans=0;
int main()
{
freopen("pairs.in", "r", stdin);
freopen("pairs.out", "w", stdout);
scanf("%d", &n);
for(i=1; i<=n; ++i)
{
scanf("%d", &x);
a[x]=1;
if(x>MX) MX=x;
}
for(i=2; i<=MX; ++i)
if(!prime[i])
{
for(j=i; j<=MX; j+=i)
{
++prime[j];
if(1LL*i*i<=MX && j%(i*i)==0) fact2[j]=1;
}
}
for(i=1; i<=MX; ++i)
if(!fact2[i])
{
cnt=0;
for(j=i; j<=MX; j+=i)
cnt+=(a[j]==1);
ans += 1LL*cnt*(cnt-1)*(prime[i]&1?-1:1);
}
printf("%lld\n", ans/2);
return 0;
}