#define ne
#ifdef ne
#include <fstream>
#include <vector>
#include <algorithm>
#include <cmath>
using namespace std;
ifstream fin("pairs.in");
ofstream fout("pairs.out");
const int valmax = 1000000;
long long n;
long long sol;
bool f[valmax + 5];
long long x[valmax + 5];
long long dz[1005];
bool p[valmax + 5];
long long b[16];
void bk(int pas,long long prod){
if(pas!=1)
{
if(pas%2)
sol-=(1LL*x[prod]*(x[prod]-1))/2;
else
sol+=(1LL*x[prod]*(x[prod]-1))/2;
}
for(int i = b[pas-1] + 1;i<=dz[0];i++){
b[pas]=i;
if(prod * dz[i] <=valmax)
bk(pas+1,prod*dz[i]);
}
}
void preprocess()
{
p[0]=p[1]=true;
int q = 1000;
for(int i = 2; i<=q;i++)
if(!p[i]){
dz[++dz[0]]=i;
for(int j = 2* i;j<=q;j+=i)
p[j]=true;
}
}
int main()
{
preprocess();
fin>>n;
for(int i=1;i<=n;i++)
{
int x;
fin>>x;
f[x]=true;
}
for(int i=2;i<=valmax;i++)
for(int j = i;j<=valmax;j+=i)
x[i]+=f[j];
bk(1,1);
fout<<n*(n-1)/2-sol;
}
#else
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream fin("pairs.in");
ofstream fout("pairs.out");
const int valmax = 1000000;
const int sqvalmax = 1000;
const int nmax = 100000;
int n;
int v[nmax + 5];
bool c[sqvalmax+5];
vector <int> dvz;
int bk[16];
int nr[16];
long long sol;
int tot[valmax + 5];
void prim()
{
c[0]=1;
c[1]=1;
for(int i=2; i<=sqvalmax; i++)
if(!c[i])
{
dvz.push_back(i);
for(int j=i*2; j<=sqvalmax; j+=i)
c[j]=true;
}
}
void desc(int val)
{
nr[0]=0;
for(auto& j : dvz)
{
if(j*j>val)
break;
if(val%j==0)
{
while(val%j==0)
val/=j;
nr[++nr[0]] = j;
}
}
if(val!=1)
nr[++nr[0]]=val;
}
void bkt(int pas,long long prod = 1)
{
if(prod!=1)
{
if(pas%2)
sol+=tot[prod];
else
sol-=tot[prod];
tot[prod]++;
}
if(pas==nr[0]+1)
return;
for(int i = bk[pas-1]+1; i<=nr[0]; i++)
{
bk[pas]=i;
bkt(pas+1,prod*nr[bk[pas]]);
}
}
int main()
{
prim();
fin>>n;
for(int i=1; i<=n; i++)
{
sol+=i-1;
fin>>v[i];
desc(v[i]);
bkt(1);
}
fout<<sol;
}
#endif