Pagini recente » Cod sursa (job #447238) | Cod sursa (job #967715) | Cod sursa (job #612170) | Cod sursa (job #1047885) | Cod sursa (job #2500778)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("pairs.in");
ofstream fout("pairs.out");
const int NMAX = 1000005;
int a[NMAX],nr_prim[NMAX];
bool frecv[NMAX],prim[NMAX];
void ciur()
{
prim[0]=prim[1]=1;
for(int i=2;i<NMAX;i++)
{
if(prim[i]==0)
{
for(int j=i;j<NMAX;j+=i)
{
if(j%(i*i)==0) prim[j]=1;
nr_prim[j]++;
}
}
}
}
int main()
{
ciur();
int n;
fin >> n;
int maxim=0;
for(int i=1;i<=n;i++)
{
fin >> a[i];
if(a[i]>maxim) maxim=a[i];
frecv[a[i]]=1;
}
int rasp=0;
for(int i=2;i<=maxim;i++)
{
if(prim[i]==0)
{
int nr=0;
for(int j=i;j<=maxim;j+=i)
nr+=frecv[j];
if(nr_prim[i]%2==0)
rasp-=((nr-1)*nr)/2;
else rasp+=((nr-1)*nr)/2;
}
}
fout << (n-1)*n/2 - rasp;
return 0;
}