#include <bits/stdc++.h>
//#define int long long
#define fast ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);
#define lg2(n) (63-__builtin_clzll(n))
#define mask(n) (1LL << (n))
#define TASK ""
#define openfile();  if( fopen(TASK".inp", "r")){freopen(TASK".inp", "r", stdin);freopen(TASK".out", "w", stdout);}
#define lc(n) (n << 1)
#define rc(n) ((n << 1) | 1)

#define fi first
#define se second
#define FOR(i, l, r, k) for( int i = l; i <= r; i += k)
#define FOD(i, r, l, k) for( int i = r; i >= l; i -= k)

#define mii map<int,int>
#define umi unordered_map<int, int>
#define pii pair<int,int>
#define vi vector<int>

using namespace std;

//const int oo = 1e18;
const int mod = 1e9 + 7;
const int nmax = 2e5 + 8;
const int base = 311;
const int N = 1e6 + 8;


int n, a[nmax], d[N];
bitset<N> p;

void sieve(){
    p[1] = 1;
    for(int i = 2; i * i < N; ++i){
        if(!p[i]){
            for(int j = i * i; j < N; j += i){
                p[j] = 1;
            }
        }
    }
}
int calc(int n){
    int cnt = 0;
//    int res = n;
    for(int i = 1; i * i <= n; ++i){
        if(n % i == 0){
            if(!p[n / i]) cnt += d[i];
            if(!p[i] && i * i != n) cnt += d[n / i];
        }
    }
    return cnt;
}

main(){
    fast;
    openfile();
    sieve();
    cin >> n;
    for(int i = 1; i <= n; ++i){
        cin >> a[i];
        d[a[i]]++;
    }
    int ans = 0;
    for(int i = 1; i <= n; ++i){
        ans += calc(a[i]);
//        cout << a[i] << ' ' << calc(a[i]) << endl;
    }
    cout << ans;
}
