func minSteps(n int) int { dp := make([]int, n+1) for i := 2; i <= n; i++ { dp[i] = i for j := 2; j*j <= i; j++ { if i%j == 0 { dp[i] = dp[i/j] + j break // Smaller j can make dp[i] smaller. } } } return dp[n] }