#include #include #include #include #include #include #include long int sequence(long int a) { // printf(">>>%ld\n", a); if(a == 1) return 1; long int divisor = -1; for(long int i = (long long int)sqrt(a); i < a; i++) { if(a % i == 0) { divisor = i; break; } } if(divisor == -1) divisor = a; long int quotient = a / divisor; if(quotient > divisor) { return 1 + sequence(divisor) * quotient; } else { return 1 + sequence(quotient) * divisor; } } long int longestSequence(int a_size, long int* a) { long int sum = 0; for(int i = 0; i < a_size; i++) { sum += sequence(*(a++)); } return sum; } int main() { int n; scanf("%i", &n); long int *a = malloc(sizeof(long int) * n); for (int a_i = 0; a_i < n; a_i++) { scanf("%li",&a[a_i]); } long int result = longestSequence(n, a); printf("%ld\n", result); return 0; }