三个自然数的积为1986,和为338,求这三个自然数

       由题意,我们可设这三个自然数分别为x,y,z 则有x+y+z = 338,xyz = 1986 由于表达式是对称的,我们不妨设x<=y<=z

        我们可以分别用x表示y和z,然后利用计算机从1到338遍历,分别求出每种情况,即可求出满足条件的情况.那么没有简单方法吗?
        那个必须有,木有我就不会写这篇文章了.
        x+y+z=338<=3z  z>112  z>=113
 那么 1986=xyz 因为z>=113 那么 xy <= 18 那么y<=18  x<=y x+y<=36 而x+y+z = 338  x+y<=36  z>=302 而xyz = 1986 那么 xy<=6 所以只需判断xy=1-6这几种情况
 显然1,2,3,4和5的情况都可以排除 只需判断6这种情况,而6等于1乘以6或者2乘以3 积满足1986的情况,但是2*3不满足和的情况,因而结果为1,6,331
         接下来把这个问题一般化 如果三个自然数分别为a,b,c 和为 a+b+c = sum,积为mul,即为abc=mul
         和杨同学讨论了一下,她说先找mul的两个最小质因数分别为Z1和Z2 那么a =Z1,b = Z2 那么c = mul/Z1*Z2 现在我们观察a+b+c是否满足和条件 如果不满足 我们找现在c的约数Y,然后把Y拆成两个数,然后分配给a和b进行相乘,如果结果满足和的条件,则满足条件,如果不满足和的条件,将其中一个数置1,然后再进行考虑,如果还不行,则考虑让c除以一个更大的数
           还是举例子实在,就那上面的例子来说
           1986的最小两个质数为2,3即a=2,b=3,c=331 这里a+b+c是不满足和的条件的 那么我们将a=2,b=3 令a=1,b=6,则结果可行
           再举一个例子 a + b+c = 30, abc = 1000,我们这个都知道结果为10,10,10 我们现在开始试探 1000的最小两个质因数为2,2,那么c=250 显然不满足条件
           接下来至少让250除以9 否则到不了和的情况,所以我们从10开始除,250/10 变成25 接下来我们要将10分配给2和2 ,那么我们将10可以分配成1,10,2,5,5,2,10,1我们分别考虑这几种情况1,10变成了2,20,25 不满足
1 40 25 不满足
4 10,25不满足
40,1不满足
10,4不满足
所以还是不行 
接下来就是除以25了 那么除以25变成10 然后要将25分配给2,2 以满足和为30 显然可以验证结果为10,10,10           
          
 
         
          
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值