#include #include #include #include #include #include #include long int longestSequenceUtil(long int no) { /* int i = 0; int retval = 0; if (no == 1) { return 1; } for (i = sqrt(no); i >= 1; i--) { if (no%i == 0) { return (i)*(longestSequenceUtil(no/i)+1); } } */ long int i = 2; long int num = 1; long int num1 = no; if (num1 == 1) { return 1; } int flag = 0; while (i <= sqrt(no)) { if (no%i == 0) { flag = 1; break; } else { i++; } } if (flag == 0) { return no + 1; } else { no = num1; i = 2; while (i <= no) { if (no%i == 0) { no = no / i; num = i; } else i++; } } return num*(longestSequenceUtil(num1 / num)) + 1; } long int longestSequence(int a_size, long int* a) { int i = 0; long int retval = 0; for (i = 0; i < a_size; i++) { retval = retval + longestSequenceUtil(a[i]); } return retval; } 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; }