Pagini recente » Cod sursa (job #630186) | Cod sursa (job #2873882) | Cod sursa (job #455699) | Cod sursa (job #2970423) | Cod sursa (job #2564065)
#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]++;
for(int d=3; d*d<=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]++;
}
}
int main()
{
cin>>N;
for(int i=1; i<=N; ++i)
{
cin>>val;
ok[val]=1;
}
kindaciur();
long long ans=0;
for(int i=1; i<=NMAX; ++i)
if(nr[i])
{
if(nrd[i]%2==0)
ans+=(nr[i]*nr[i-1])/2;
else ans-=(nr[i]*nr[i-1])/2;
}
cout<<ans<<'\n';
return 0;
}