Pagini recente » Cod sursa (job #1276642) | Cod sursa (job #1113494) | Cod sursa (job #1731658) | Cod sursa (job #3123437) | Cod sursa (job #2451212)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f ("pairs.in");
ofstream g ("pairs.out");
long long n,x, maxx, ciur[1000002],s;
bool isinSet[1000002], ispp[1000002];
int main()
{
f>>n;
for(int i=1; i<=n; ++i)
{
f>>x;
isinSet[x] = true;
maxx = max(maxx, x);
}
for (int i=2; i<=maxx; ++i)
{
if (!ciur[i])
{
for (int j=i; j<=maxx; j+=i)
{
++ciur[j];
if (j % (i*i) == 0)
ispp[j] = true;
}
}
}
for (int i=2; i<=maxx; ++i)
{
if (!ispp[i])
{
long long nr=0;
for (int j=i; j<=maxx; j+=i)
{
if (isinSet[j]) ++nr;
}
if (ciur[i]%2 == 1) s = s + 1LL * (nr*(nr-1)) /2;
else s = s - 1LL * (nr*(nr-1)) /2;
}
}
g<<1LL*(n*(n-1))/2 - s;
return 0;
}