#include <memory.h>
#include <algorithm>
#include <bitset>
#include <cassert>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ctime>
#include <deque>
#include <functional>
#include <iomanip>
#include <iostream>
#include <list>
#include <map>
#include <numeric>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <unordered_map>
#include <unordered_set>
#include <utility>
#include <vector>
using namespace std;
typedef long long ll;
typedef long double ldbl;

const int MAX = 10000007;

int lp[MAX];
int pr[664580], pr_cnt;

deque<ll> fff(ll n) {
  deque<ll> ret;
  int pr_ind = 0;
  while (n > 1 && pr_ind < pr_cnt && 1ll * pr[pr_ind] * pr[pr_ind] <= n) {
    while (n % pr[pr_ind] == 0) {
      n /= pr[pr_ind];
      ret.push_back(pr[pr_ind]);
    }
    pr_ind++;
  }
  if (n > 1) {
    ret.push_back(n);
  }
  return ret;
}

ll solve(const ll n, deque<ll>& pf) {
  if (pf.empty()) {
    return 1;
  }

  const ll f = pf.front();
  pf.pop_front();

  return 1 + f * solve(n / f, pf);
}

int main() {
  for (int i = 2; i < MAX; ++i) {
    if (!lp[i]) {
      lp[i] = i;
      pr[pr_cnt++] = i;
    }
    for (int j = 0; j < pr_cnt && pr[j] <= lp[i] && i * pr[j] < MAX; j++) {
      lp[i * pr[j]] = pr[j];
    }
  }

  ll ans = 0;
  int k;
  scanf("%d", &k);
  while (k--) {
    ll n;
    scanf("%lld", &n);

    deque<ll> pf = fff(n);
    reverse(pf.begin(), pf.end());

    ans += solve(n, pf);
  }
  printf("%lld\n", ans);

  return 0;
}