Pagini recente » Cod sursa (job #1322569) | Cod sursa (job #1116645) | Cod sursa (job #2458754) | Cod sursa (job #848656) | Cod sursa (job #2451196)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f ("pairs.in");
ofstream g ("pairs.out");
int isinSet[1000002], ispp[1000002];
long long ciur[1000002];
long long n,x, maxx;
int main()
{
f>>n;
for(int i=1;i<=n;++i)
{
f>>x;
maxx=max(maxx,x);
isinSet[x]=1;
}
for(int i=2;i<=maxx;++i)
{
if(ciur[i]==0)
{
for(int j=i;j<=maxx;j+=i)
{
++ciur[i];
if(j%(i*i)==0)
ispp[j]=1; // nu e bun pt ca se repeta cand numar multiplii
}
}
}
long long s=0;
for(int i=2;i<=maxx;++i)
{
if(ispp[i]==0)
{
long long nr=0;
for(int j=2;j<=maxx;j+=i)
{
if(isinSet[j]==1)
++nr;
}
if(ciur[i]%2==1) s+= 1ll*nr*(nr-1) /2;
else s-= 1ll*nr*(nr-1) /2;
}
}
g<<1ll*n*(n-1)/2 - s;
return 0;
}