#include #include #include #include #include #include #include long int longestSequence(int a_size, long int* a) { // Return the length of the longest possible sequence of moves. long int sum = 0 , k; int count; for(int i = 0;i < a_size ; i++) { k = 1; count = 0; long int arr[10000]; while(a[i] > 1) { for(long int j = 2 ; j <= a[i] ; j++) { if(a[i] % j == 0) { arr[count++] = j; a[i] = a[i] / j; break; } } } sum += k; for(int j = count-1; j >= 0; j--) { sum += k * arr[j]; k = k * arr[j]; } } 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; }