Пример #1
0
 int minSteps(int n) 
 {
     if(n<=1)
         return 0;
     else if(n%2==0)
         return minSteps(n/2)+2;
     else
     {
         int min_stp=INT_MAX;
         for(int i=n-1;i>=1;i--)
         {
             if(n%i==0)
                 min_stp=min(min_stp, minSteps(i)+n/i);
         }
         return min_stp;
     }
 }
Пример #2
0
 int minSteps(int n) {
 	if(n == 1)
 		return 0;
 	for (int i = 2; i <= n; ++i){
 		if(n%i == 0){
 			return i+minSteps(n/i);
 		}
 	}
 	return n;
 }
Пример #3
0
 int minSteps(int n) {
     // var
     int t[6] = { 
         0, 0, 2, 3, 4, 5 
     };
     
     if (n < 6) {
         return t[n < 0 ? 0 : n];
     }
 
     for (int i = 2; i < pow(n, 0.5) + 1; i++) {
         if (n % i == 0) {
             // var
             int a = min(i, n / i);
             int b = max(i, n / i);
             
             return minSteps(b) + 1 + (a - 1);
         }
     }
     return n;
 }