#define _USE_MATH_DEFINES #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef pair P; typedef tuple T; long long int INF = 1e18; long long int MOD = 1e9 + 7; long long int DP[100001]; long long int GCD(long long int a, long long int b){ long long int dummy1, dummy2, dummy; dummy1 = max(a, b); dummy2 = min(a, b); while(true){ dummy = dummy1 % dummy2; dummy1 = dummy2; dummy2 = dummy; if(dummy == 0){ break; } } return dummy1; } int main(){ int N; cin >> N; map m; for(int i = 0; i < N; i++){ long long int A; cin >> A; long long int DP_[100001] = {}; for(int j = 1; j <= 100000; j++){ DP_[GCD(A, j)] += DP[j]; } map m2; for(P p : m){ long long int G = GCD(A, p.first); if(G <= 100000){ DP_[G] += p.second; }else{ m2[G] += p.second; } } for(int j = 0; j <= 100000; j++){ DP[j] += DP_[j]; } for(P p : m2){ m[p.first] += p.second; } if(A < 100000){ DP[A] += 1; }else{ m[A] += 1; } } cout << DP[1] << endl; return 0; }