Pagini recente » Cod sursa (job #987039) | Cod sursa (job #1351639) | Cod sursa (job #410546) | Cod sursa (job #2826131) | Cod sursa (job #1572854)
#include <cstdio>
using namespace std;
const int mil = 1000000;
int n,c[mil+2];
long long r;
bool a[mil+2];
int main() {
freopen("pairs.in", "r", stdin);
freopen("pairs.out", "w", stdout);
scanf("%d", &n);
for(int i = 1; i <= n; ++i) {
int aux;
scanf("%d", &aux);
a[aux] = true;
}
for(int i = 2; i <= mil; ++i)
if(not c[i])
for(int j = i; j <= mil; j += i)
++ c[j];
for(int i = 2; i * i <= mil; ++i)
for(int j = i * i; j <= mil; j += i * i)
c[j] = 0;
r = (1LL*n*n-n)/2;
for(int i = 2; i <= mil; ++i)
if(c[i]) {
int aux = 0;
for(int j = i; j <= mil; j += i)
if(a[j])
++ aux;
if(c[i] & 1)
r -= (1LL*aux*aux-aux)/2;
else
r += (1LL*aux*aux-aux)/2;
}
printf("%lld\n", r);
return 0;
}