private int solve(int a){     int[] dp = new int[a];     dp[0] = 0;     dp[1] = 1;     dp[2] = 1;     dp[3] = 1;     boolean isPrime = true;     for(int i = 4; i <= a; i++){         isPrime = true;         for(int j = 2; j * j <= i; j++){             if(i % j == 0){                 isPrime = false;                 dp[i] = dp[j] + dp[i/j];                 break;             }         }         if(isPrime){             dp[i] = 1;         }     }     int sum = 0;     for(int i = 2; i <= a; i++){         sum += dp[i];     }     return sum; } 凭记忆写的,大概是这样,用dp[i]记录i有多少个质因子
点赞 评论

相关推荐

浩浩没烦恼:一二面加起来才一个小时? 我一面就一个小时多了
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务