import java.util.Scanner;public class Main{public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();int[] dp = new int[n + 1];int[] x = new int[n + 1];//计算质数缓存int[] y = new int[n];//存放质数int cut = 0;for (int i = 2; i < x.length; i++) {if (x[i] == 0) {y[cut++] = i;if (i > 46341) {//Math.sqrt(Integer.MAX_VALUE)+1continue;//跳过循环,否则下面执行i*i将溢出}for (int j = i * i; j < x.length; j += i) {x[j] = 1;}}}for (int i = 4; i < dp.length; i++) {//i个糖果for (int j = 0; j < y.length; j++) {//拿y[j]个,下标从0开始if (y[j] * y[j] > i) {break;}if (i % y[j] == 0) {dp[i] = Math.max(dp[i], dp[i - 2 * y[j]] + y[j]);}}}System.out.println(dp[dp.length - 1]);}}
本文发布于:2024-01-30 20:41:33,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170661849422695.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |