由题意,我们可设这三个自然数分别为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