Pagini recente » Cod sursa (job #2193942) | Cod sursa (job #1545206) | Cod sursa (job #2890233) | Cod sursa (job #76851) | Cod sursa (job #772417)
Cod sursa(job #772417)
#include<fstream>
#define dim 1000700
using namespace std;
ifstream f("pairs.in");
ofstream g("pairs.out");
long long nrdp[dim],x,n,C[dim],i,j,p[dim],NU[dim],MAX;
long long res;
long long max(long long a,long long b){
if(a<b)
return b;
return a;
}
int main (){
f>>n;
MAX=-1;
for(i=1;i<=n;i++){
f>>x;
C[x]++;
MAX=max(MAX,x);
}
res=(long long)n*(n-1)/2;
for(i=2;i<MAX;++i){
for(j=2*i;j<MAX;j+=i){
C[i]+=C[j];
}
if(!p[i]){
nrdp[i]=1;
p[i]=1;
for(j=2*i;j<MAX;j+=i) {
p[j]=1;
if((j/i)%i==0)
NU[j]=1;
nrdp[j]^=1;
}
}
if(!NU[i]){
if(nrdp[i])
res-=(long long )C[i]*(C[i]-1)/2;
else
res+=(long long )C[i]*(C[i]-1)/2;
}
}
g<<res<<"\n";
return 0;
}