使用因数分解的方法
如果这个数是素数那么就返回这个数,如果可以分解,就分解求。
class Solution { public int minSteps(int n) { int[] dp = new int[n+1]; //dp[i]表示打印i个的最少操作 dp[1] = 0; for(int i=2;i<=n;i++){ for(int j=2;j<=Math.sqrt(i);j++){ if(i%j==0){ dp[i] = dp[j] + dp[i/j]; } } if(dp[i]==0){ dp[i] = i; } } return dp[n]; } }