JAVA算法:以最小成本分拆数字

JAVA算法:以最小成本分拆数字

给定一个整数n(n≥2),将该整数拆分为k个整数之和,即n=k1+k2+…+kn,其中每个元素都大于2;拆分成本计算为maxdiv(k1)+maxdiv(k2)+…+maxdiv(kn),其中maxdiv(x)是小于x的最大除数。

任务是以最小化成本的方式拆分数字,最后打印最小化成本。

例如:

给定整数:N = 6
输出结果: 2

6 可以表示为 3+3,最小成本cost是 1+1 = 2

给定整数: N = 5
输出结果: 1

5 不可拆分。

问题分析

当n是素数时,成本将是1,因为我们不需要分割n,n小于其本身的最大除数将是1。

如果n是奇数,n–2是质数,则n可以拆分为(2+质数),成本为1+1=2。

根据哥德巴赫的猜想,如果n是偶数,则成本为2,大于2的每一偶数都可以表示为两个素数之和,直到4^1018为止。

如果不满足上述所有条件,则n现在必须是奇数,如果从n中减去3,则它将变为偶数,可以表示为(3+偶数)=(3+素数+素数)&

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值