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; } }
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; }
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; }