Pagini recente » Cod sursa (job #1360736) | Cod sursa (job #415474) | Cod sursa (job #2450409) | Cod sursa (job #2950389) | Cod sursa (job #1845650)
#include <iostream>
#include <cstdio>
#define MAXVAL 1000050
using namespace std;
int n, a[MAXVAL];
int viz[MAXVAL], nq, out[MAXVAL];
void ciur()
{
for (int i = 2; i < MAXVAL; i++)
{
if (!viz[i]) {
for (int j = i; j < MAXVAL; j += i)
viz[j]++;
if (1LL*i*i >= MAXVAL) continue;
for (int j = i*i; j < MAXVAL; j += i*i)
out[j]++;
}
}
}
void solve()
{
long long rez = 0;
for (int i = 1; i < MAXVAL; i++)
{
if (out[i]) continue;
long long cate = 0;
for (int j = i; j < MAXVAL; j += i)
cate += a[j];
/// PINEX
if (viz[i] & 1)
rez -= cate*(cate-1);
else
rez += cate*(cate-1);
}
printf("%lld", rez/2);
}
int main()
{
freopen("pairs.in", "r", stdin);
freopen("pairs.out", "w", stdout);
scanf("%d", &n);
for (int i = 1; i <= n; i++) {
int x;
scanf("%d", &x);
a[x] = 1;
}
ciur();
solve();
return 0;
}