Pagini recente » Cod sursa (job #2298393) | Cod sursa (job #27589) | Cod sursa (job #2245909) | Cod sursa (job #1619126) | Cod sursa (job #390017)
Cod sursa(job #390017)
# include <fstream>
using namespace std;
int n, p[1000003], np, x[1000003], nx, v[100003], res, prim[100000], pr, u[1000000];
void read ()
{
ifstream fin ("pairs.in");
fin>>n;
for (int i=1;i<=n;i++)
{
fin>>v[i];
if (v[i]>nx)
nx=v[i];
}
}
void prime ()
{
prim[++pr]=2;
for (int i=3;i<=nx;i++)
if (p[i]==0)
{
prim[++pr]=i;
for (int j=2*i;j<=1000000;j+=i)
p[j]=1;
}
}
int semn (int q)
{
int i=1;
while (q>1)
{
if (q%prim[i]==0 && u[prim[i]]==0)
{
q/=prim[i];
u[prim[i]]=88889;
}
if (q%prim[i]==0 && p[prim[i]]==0)
return -1;
i++;
}
return 1;
}
int calcul ()
{
for (int i=1;i<=n;i++)
for (int j=2;j<=v[i];j++)
if (v[i]%j==0)
x[j]++;
for (int i=2;i<=nx;i++)
if (x[i])
res+=(x[i]*(x[i]-1)/2*semn(i));
if (n%2==0)
return n/2*(n-1)-res;
else
return (n-1)/2*n-res;
}
int main ()
{
read ();
prime ();
ofstream fout ("pairs.out");
fout<<calcul();
return 0;
}