Pagini recente » Cod sursa (job #80262) | Cod sursa (job #2798680) | Cod sursa (job #2864880) | Cod sursa (job #649698) | Cod sursa (job #1845647)
#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()
{
int rez = 0;
for (int i = 1; i < MAXVAL; i++)
{
if (out[i]) continue;
int 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("%d", 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;
}