Pagini recente » Cod sursa (job #1941121) | Cod sursa (job #2167883) | Cod sursa (job #1244604) | Cod sursa (job #1910009) | Cod sursa (job #2564077)
#include <fstream>
#define NMAX 1000000
using namespace std;
ifstream cin("pairs.in");
ofstream cout("pairs.out");
bool ok[NMAX+10];
int nr[NMAX+10], nrd[NMAX+10], N, val;
inline void kindaciur()
{
for(int d=4; d<=NMAX; d+=2)
if(ok[d])
nr[2]++, nrd[d]++, nr[d]++;
else nrd[d]++;
for(int d=3; d*2<=NMAX; ++d)
if(nrd[d]==0)
{
if(ok[d])
nr[d]++;
for(int j=d*2; j<=NMAX; j+=d)
if(ok[j])
nrd[j]++, nr[d]++, nr[j]++;
else nrd[j]++;
}
}
int main()
{
cin>>N;
for(int i=1; i<=N; ++i)
{
cin>>val;
ok[val]=1;
}
kindaciur();
long long ans=(N*(N-1)/2);
for(int i=1; i<=NMAX; ++i)
if(nr[i])
{
if(nrd[i]%2==0)
ans-=(1ll*nr[i]*nr[i-1])/2;
else ans+=(1ll*nr[i]*nr[i-1])/2;
}
cout<<ans<<'\n';
return 0;
}