Pagini recente » Cod sursa (job #1669603) | Cod sursa (job #1443063) | Cod sursa (job #2104351) | Cod sursa (job #732241) | Cod sursa (job #1982437)
#include <fstream>
using namespace std;
ifstream fin ("pairs.in");
ofstream fout ("pairs.out");
int n, f[1000001], v[1000001], c[1000001];
long long maxim;
int main()
{
fin >> n;
int nr;
for (int i=1; i<=n; i++)
{
fin >> nr;
if (nr > maxim)
maxim = nr;
f[nr] ++;
}
fin.close();
for (int i=2; i<maxim; i++)
if (c[i] == 0)
for (int j=i; j<=maxim; j+=i)
c[j] ++;
for (int i=2; i*i<=maxim; i++)
for (int j=i*i; j <=maxim; j+=i*i)
c[j] = -1;
int res = 0, num;
for (int i=2; i<=maxim; i++)
if (c[i] != -1)
{
num=0;
for (int j=i; j <=maxim; j+=i)
if (f[j] == 1)
num ++;
if (c[i] % 2 == 1)
res = res + num*(num-1)/2;
else
res = res - num*(num-1)/2;
}
fout << n*(n-1)/2 - res;
return 0;
}