importjava.util.Scanner;publicclassMain{staticint index =0;publicstaticvoidmain(String[] args){Scanner sc =newScanner(System.in);int n = sc.nextInt();//特判if(n ==1){System.out.println(2);}else{int[] su =newint[100001];//素数表int[] sus =newint[100001];//在唯一分解定理中出现的素数int[] ci =newint[100001];//各个素数的指数int ind =0;int ans =1;int sum =0;sushu(su,n);int c = n;boolean flag =false;//利用唯一分解定理for(int i =0;i<index;i++){if(c ==1){break;}while(c % su[i]==0){
c /= su[i];
sus[ind]= su[i];
ci[ind]++;
flag =true;}if(flag){
ind++;}
flag =false;}//如果n只有一种因子,例如5,那么最优解为5+1=6if(ind ==1){System.out.println(n+1);}else{for(int i =0;i<ind;i++){while(ci[i]>0){
ans *= sus[i];
ci[i]--;}
sum += ans;
ans =1;}System.out.println(sum);}}}//利用Eratosthenes算法构造素数表publicstaticvoidsushu(int[] su,int n){boolean[] vis =newboolean[n +1];int m =(int)Math.sqrt(n +0.5);for(int i =2; i <= m; i++){if(vis[i]==false){for(int j = i * i; j <= n; j += i){
vis[j]=true;}}}for(int i =2;i<=n;i++){if(vis[i]==false){
su[index++]= i;}}}}