Pagini recente » Cod sursa (job #2288202) | Cod sursa (job #1110639) | Cod sursa (job #2371308) | Cod sursa (job #407229) | Cod sursa (job #1849611)
#include <cstdio>
#define MAXM 1000005
using namespace std;
int n;
int v[MAXM + 5];
char vp[MAXM + 5], a[MAXM + 5];
long long sg(int n) {
return 1LL * n * (n + 1) / 2;
}
int main()
{
long long rez = 0;
int val, i, j, per = 0;
freopen("pairs.in", "r", stdin);
freopen("pairs.out", "w", stdout);
scanf("%d", &n);
for(i = 0; i < n; i++)
{
scanf("%d", &val);
a[val] = 1;
}
for(i = 2; i <= MAXM; i += 2)
v[i] = 1;
for(i = 4; i <= MAXM; i += 4)
vp[i] = 1;
for(i = 3; i <= MAXM; i += 2)
{
if(v[i] == 0)
{
per = 0;
for(j = i; j <= MAXM; j += i)
v[j]++;
if(1LL * i * i <= MAXM)
for(j = i * i; j <= MAXM; j += i * i)
vp[j] = 1;
}
}
for(i = 2; i <= MAXM; i++)
{
if(vp[i] == 0)
{
per = 0;
for(j = i; j <= MAXM; j += i)
per += a[j];
if(v[i] & 1)
rez += sg(per);
else rez -= sg(per);
}
}
rez = sg(n) - rez;
printf("%lld", rez);
return 0;
}