Pagini recente » Cod sursa (job #1498757) | Cod sursa (job #2264937) | Cod sursa (job #2877475) | Cod sursa (job #3242528) | Cod sursa (job #3291381)
#include <fstream>
#include <bits/stdc++.h>
#define int long long
using namespace std;
ifstream fin("pairs.in");
ofstream fout("pairs.out");
int n, a[10005], i, j, fr[10005], sol;
vector <int> prim;
signed main()
{
fin>>n;
for(i=1; i<=n; i++)
fin>>a[i];
sort(a+1, a+n+1);
for(i=1; i<=n; i++)
{
int d=2, c=a[i];
vector <int> prim;
while(c>1)
{
if(c%d==0)
{
prim.push_back(d);
while(c%d==0)
c/=d;
}
d++;
if(d*d>c)
d=c;
}
int nr=prim.size();
int ans=0;
for(int mask=1; mask<(1<<nr); mask++)
{
int pr=1, nr1=0;
for(int j=0; j<nr; j++)
if(mask&(1<<j))
{
pr*=prim[j];
nr1++;
}
fr[pr]++;
if(nr1%2==1)
ans+=fr[pr];
else if(nr1!=0)
ans-=fr[pr];
}
sol+=i-ans;
}
fout<<sol;
return 0;
}