Pagini recente » Cod sursa (job #915670) | Cod sursa (job #1361675) | Cod sursa (job #2961441) | Cod sursa (job #2379351) | Cod sursa (job #2310137)
#include<fstream>
using namespace std;
ifstream cin("pairs.in");
ofstream cout("pairs.out");
int n,x,Maxim;
bool Prez[1000005];
long long Total,Rez;
int main(){
std::ios_base::sync_with_stdio(false);
cin>>n;
for(int i=1;i<=n;i++){
cin>>x;
Maxim=max(x,Maxim);
Prez[x]=1;
}
int NrEl[Maxim+5]={0},PrDesc[Maxim+5]={0},PrUnic[Maxim+5]={0};
for(int i=2;i<=Maxim;i+=2){
PrDesc[i]++;
PrUnic[i]=i/2;
}
for(int i=3;i<=Maxim;i+=2)
PrUnic[i]=i;
for(int i=3;i<=Maxim;i+=2)
if(PrDesc[i]==0)
for(int j=i;j<=Maxim;j+=i){
PrDesc[j]++;
PrUnic[j]/=i;
}
/**for(int i=2;i<=Maxim;i++)
if(PrDesc[i]==0)
for(int j=i;j<=Maxim;j+=i){
{1}
PrDesc[j]++;
PrUnic[j]/=i;
{1}
}**/
for(int i=2;i<=Maxim;i++)
if(PrUnic[i]==1)
for(int j=i;j<=Maxim;j+=i)
NrEl[i]+=Prez[j];
Total=1LL*n*(n-1)/2;
for(int i=2;i<=Maxim;i++)
if(PrUnic[i]==1){
if(PrDesc[i]%2==0)
Rez-=1LL*NrEl[i]*(NrEl[i]-1)/2;
else
Rez+=1LL*NrEl[i]*(NrEl[i]-1)/2;
}
cout<<Total-Rez;
}