#include #include #include #include #include #include #include int isprime(int n){ int i; for(i=2;i*i<=n;i++){ if(n%i==0) return 0; } return 1; } long int moves(long int n){ int i,m=0,temp,in; if(isprime(n)) return n+1; for(i=2;i<=n/2;i++){ if(n%i==0){ //printf("in the number %d\t%d\n",n,i); temp=i*moves(n/i); if(temp>m) m=temp; in=i; //printf("%d\t%d\t%d\n",n,in,m); } } //printf("\n%d",in); return 1+m; } long int longestSequence(int n, long int a[]) { int i,k=0,sum=0; for (i = 0; i < n; i++) { k=isprime(a[i]); if(a[i]==1) continue; else if(k==1) a[i]=a[i]+1; else a[i]=moves(a[i]); } for (i = 0; i < n; i++) { sum+=a[i]; //printf("\nsum is %d",sum); } return sum; } int main() { int n,a_i; scanf("%i", &n); long int a[n]; for (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; }