#include #include #include #include #include #include #include int prime(long a){ long int r=(int)sqrt(a); for(int i=2;i<=r;i++){ if(a%i==0){ return 0; } } return 1; } long int longestSequence(int n, long int* a) { // Return the length of the longest possible sequence of moves. long ans=0; for(int i=0;i1;j--){ if(a[i]%j==0){ if(prime(j)==1){ //printf("%ld %ld\n",j,a[i]/j); if((prime(a[i]/j)==1&&a[i]/j<=j)||prime(a[i]/j)==0){ ta1*=j; ta+=ta1; a[i]=a[i]/j; //printf("a %ld\n",ta1); goto part1; } } if((prime(a[i]/j)==1&&prime(j)==0)||(prime(a[i]/j)==1&&prime(j)==1&&a[i]/j>j)){ ta1*=a[i]/j; ta+=ta1; a[i]=j; //printf("a %ld\n",ta1); goto part1; } } } if(r=-1){ ta+=te; } ans+=ta; if(te==1){ ans--; } } return ans; } 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; }