使用因数分解的方法
如果这个数是素数那么就返回这个数,如果可以分解,就分解求。
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];
}
} 
京公网安备 11010502036488号