#include using namespace std; typedef long long ll; typedef pair p_ll; template void debug(T itr1, T itr2) { auto now = itr1; while(now=0; i--) const ll MOD = pow(10,9)+7; const ll LLINF = pow(2,61)-1; const int INF = pow(2,30)-1; vector fac; void c_fac(int x=pow(10,6)+10) { fac.resize(x,true); rep(i,x) fac[i] = i ? (fac[i-1]*i)%MOD : 1; } ll modpow(ll x, ll p) { ll result = 1, now = 1, pm = x; while (now<=p) { if (p&now) { result = result * pm % MOD; } now*=2; pm = pm*pm % MOD; } return result; } ll inv(ll a, ll m=MOD) { ll b = m, x = 1, y = 0; while (b!=0) { int d = a/b; a -= b*d; swap(a,b); x -= y*d; swap(x,y); } return (x+m)%m; } ll nck(ll n, ll k) { return fac[n]*inv(fac[k]*fac[n-k]%MOD)%MOD; } ll gcd(ll a, ll b) { if (a pfac; Sieve(ll x=pow(10,6)+10) { pfac.resize(x,-1); pfac[0] = 0; pfac[1] = 1; for (ll i=2; i*i<=x; i++) { if (pfac[i]==-1) { for (ll j=2; i*j<=x; j++) { if (pfac[i*j]==-1) pfac[i*j] = i; } } } } bool isp(ll n) { return pfac[n]==-1; } vector factors(ll n) { vector result; ll nf = 0, nc = 0; while (!isp(n)) { if (nf!=pfac[n]) { if (nf) result.push_back(make_pair(nf,nc)); nf = pfac[n]; nc = 1; } else nc++; n /= pfac[n]; } if (nf!=n) { if (nf) result.push_back(make_pair(nf, nc)); result.push_back(make_pair(n,1)); } else { nc++; result.push_back(make_pair(nf, nc)); } return result; } }; // ---------------------------------------------------------------------- // ---------------------------------------------------------------------- int main() { ll N, M; cin >> N >> M; ll A[M]; rep(i,M) cin >> A[i]; // rep(i,M) { // ll result = 0; // repr(j,1,A[i]+1) result += gcd(A[i],j) - 1; // cout << result << endl; // } Sieve s; ll result = 0; rep(i,M) { vector factors = s.factors(A[i]); ll nowres = A[i]; // for (auto x: factors) cout << x.first << "^" << x.second << " "; cout << endl; for (auto x: factors) nowres = nowres * ((x.first-1)*(x.second+1)+1)/x.first; nowres -= A[i]; // cout << nowres << endl; result += nowres; } cout << result << endl; return 0; }