#include #include #include #include #include using namespace std; vector table(10000000); unsigned long int prime_factors(unsigned long int n) { unsigned int max_factor = 1; unsigned int d = 2; while (n > 1) { while (n % d == 0) { if (d > max_factor) { max_factor = d; } n /= d; } d = d + 1; if (d*d > n) { if (n > 1) { if (n > max_factor) { max_factor = n; } break; } } } return max_factor; } unsigned long long int findWays(unsigned long int x) { if (x < 10000000) { if (table[x] == 0) { unsigned long int largest_prime_factor = prime_factors(x); table[x] = 1 + largest_prime_factor * findWays(x / largest_prime_factor); } return table[x]; } else { unsigned long int largest_prime_factor = prime_factors(x); return 1 + largest_prime_factor * findWays(x / largest_prime_factor); } } int main() { /* Enter your code here. Print output to STDOUT */ unsigned int n; cin >> n; vector a(n); for (unsigned int i = 0; i < n; i++) { cin >> a[i]; } unsigned long long int count = 0; table[1] = 1; for (unsigned int x = 0; x < n; ++x) { count += findWays(a[x]); } cout << count << endl; return 0; }