n个容器取油问题再探
在 韩信分油问题的拓展分析 里,最后给出了一般性的结论,即:
用 n (n > 1) 个不规则无刻度的容器从一个无穷大的油桶里取油,这些容器容量都为整数升,分别记为 a1, a2, ..., an ,且满足(a1, a2, ..., an) = 1。则所能取得的整数升油量为0到s范围内的全体整数,s = a1+a2+...+an。
为了证明这个一般性结论,给出了一个未能证明的引理,即:
引理 若n个正整数满足 (a1, a2, ..., an) = 1,并记 s为这n个数的和,则有 min{ (a1, s), (a2, s), ..., (an, s) } = 1。
昨天晚上和葛永超、walls老师进一步探讨了一下。永超首先找到了一个 n=4 的反例:2, 3, 4, 9。
2+3+4+9 = 18, (2, 18) = 2, (3, 18) = 3, (4, 18) = 2, (9, 18)= 9,确实是反例,因此上述“引理”被证伪。
随后,我想到把这个被证伪的“引理”的结论稍作弱化处理,得到如下调整的引理:
引理 若n (n > 1) 个正整数满足 (a1, a2, ..., an) = 1,把这 n 个数分成两组,则至少存在一种分法,使得每组数的和,分别记为 s1 和 s2,满足 (s1, s2) = 1。
这样 2, 3, 4, 9 就不是反例了,因为 (2+3, 4+9) = 1。若这个引理成立,一样可以由这个引理把容器数 n > 2 的取油问题等价为容器数 n = 2 的取油问题。
我指出若能找出三个数的反例,这个调整后的引理也就不成立;和walls老师确认这个弱化后的结论证明起来依然很困难后就休息了。
今早一起来,看到了永超提供的三个数的反例:6, 15, 49。
6+15+49 = 70,(6, 70) = 2, (15, 70) = 5, (49, 70) = 7,的确是三个数的反例,调整后的“引理”也被证伪。
琢磨了一下这个反例的构造规律,发现其中有一组基础数:2, 5, 7,满足两个较小的数之和等于较大的数(即 2+5=7),这三个基础数的最小公倍数为2·5·7=70;据此要构造反例的三个数分别记为 a, b, c,令 c = 7·7,并令 a+b+c = 2·5·7,于是 a+b = (2·5 - 7)·7 = 3·7,令 a = 2·3 及 b = 5·3,就得到了 6, 15, 49 这一组反例。
同样,选 2, 7, 9为基础数,可以得到另一组反例:10, 35, 81。事实上,只要选2作为基础数,再选两个相邻的奇数为基础数,按上述方法一般都可以构造出一组三个数的反例(唯一的例外是2, 1, 3这一组基础数)。以 2, 3, 5 为基础数,可得最小的一组三个数的反例 2,3, 25。
也可以使用2以外的偶数作基础数,比如由 3, 4, 7 得到的反例是 15, 20, 49。
再来考虑多于三个数的反例,比如在三个数的反例 15, 20, 49 基础上,添加一个数,能否构造出四个数的反例。
15 = 3*5, 20 = 2*2*5, 49 = 7*7
又由于 15+20+49 = 84 = 2*2*3*7
所以可以构造第四个数为 2*3*7 = 42
这样就得到了4个数15, 20, 42, 49。这4个数的和为126,4个数中任意一个数和126都不互素,且
由 (42+15, 126) = 3, (42+20, 126) = 2, (42+49, 126) = 7,可知 15, 20, 42, 49 这一组数构成了一组4个数的反例。
易知更多个数的反例只需补充上相应数量的42或42的任意倍数即可。至此可知,上面所谓的“引理”已经没有可以调整的余地和价值。这也说明上面的n个容器取油的一般性结论,如果成立的话,还需另辟蹊径证明。
对于n个容器取油的一般性结论,我依然不能证明或证伪。以下仅就上述几个反例的情形做一些具体的探索。
先看 n = 3 的情形,假设三个容器的容量分别为 6, 15, 49 升,由上面的分析已经知道这三个容器不能分成两组,使得各组的复合容量数互素,即无法等价成 n = 2 的情形。但由 (15, 49) = 1 可知由容量分别为 15 和 49 升的两个容器取得的整数升油数为 0 到 15+49 = 64 之间的全体整数。而 6+15+49 = 70,三个容器都装满可取得70升油,因此只需列举出65 到 69 升油也都可以用三个容量分别为6, 15, 49 升的容器取得,0 到 70 之间的全体整数升油便都能取得。
由 (15, 49) = 1,用49升和15升的容器可以倒腾出 1 升的油量,用6升的容器盛放这1升油,并把15升和49升的容器倒满油,于是就得到了 1+15+49 = 65 升油;
同样地,由 (15, 49) = 1,用49升和15升的容器可以倒腾出 2 升的油量,用6升的容器盛放倒腾出的2升油,并把15升和49升的容器倒满油,于是就得到了 2+15+49 = 66 升油;
用49升和15升的容器还可以倒腾出 3、4、5 升的油量,用同样的方法,可以依次得到67、68、69升油。
再看一个 n = 4 的情形,假设4个容器的容量分别为 15, 20, 42, 49 升,由上面的分析已经知道这4个容器不能分成两组,使得各组的复合容量数互素,即无法等价成 n = 2 的情形。但由 (20, 49) = 1 可知由容量分别为 20 和 49 升的两个容器取得的整数升油数为 0 到 20+49 = 69 之间的全体整数。而 15+20+42+49 = 126,还需要考察 70到125之间的每个整数是否能取到。
15+42 = 57,于是由 20 升 和 49 升的容器倒腾出的 1 到 56 升的油量可以倒腾到 15 升和 42 升这两个容器里存放,再把 20 升 和 49 升的容器倒满,就能依次取得 69+1=70 到 69+56=125 升油。
以上两个具体例子的考察说明,这两个所谓反例只是上面所谓“引理”的反例,而不是n个容器取油的一般性结论的反例。