Pagini recente » Cod sursa (job #2101536) | Cod sursa (job #2990154) | Cod sursa (job #242698) | Cod sursa (job #1295882) | Cod sursa (job #1946361)
#ifdef _MSC_VER
#define _CRT_SECURE_NO_WARNINGS
#endif
#include <fstream>
using namespace std;
FILE * fin=fopen("pairs.in","r");
FILE * fout=fopen("pairs.out","w");
bool v[1000005];
int p[1000005];
long long n, maxim, nr;
void ciur();
int ok(int x);
int main()
{
int i, j, x, aux;
long long rez = 0;
fscanf(fin, "%lld", &n);
for (i = 1; i <= n; i++)
{
fscanf(fin, "%d", &x);
v[x] = 1;
if (x > maxim)
maxim = x;
}
ciur();
for (i = 2; i*i <= maxim; i++)
for (j = i*i; j <= maxim; j += i*i)
p[j] = -1;
for (i = 2; i <= maxim; i++)
{
if (p[i] == -1)
continue;
nr = 0;
for (j = i; j <= maxim; j += i)
nr += v[j];
aux = p[i];
if (aux % 2)
rez += nr*(nr - 1) / 2;
else
rez -= nr*(nr - 1) / 2;
}
fprintf(fout, "%lld\n", n*(n-1)/2-rez);
return 0;
}
void ciur()
{
long long i, j;
for (i=2;i<=maxim;i++)
if (!p[i])
{
for (j = i; j <= maxim; j += i)
p[j]++;
}
}