王德贵
“群牛问题”在古希腊科学家阿基米德的研究课题中比较特别,是以诗句的形式出现在给埃拉托塞尼的一封信中。虽然其真实性有待考证,因为“群牛问题”大概很早以前就已存在,阿基米德只是重新研究而已,但历史上对这个问题的研究,却丰富了初等数论的内容。
下面我们也来分析一下群牛问题,并用Python求解验证。
太阳神有一牛群,由白、黑、花、棕四种颜色的公、母牛组成。
在公牛中,白牛数多于棕牛数,多出之数相当于黑牛数的1/2+1/3;黑牛数多于棕牛数,多出之数相当于花牛数的1/4+1/5;花牛数多于棕牛数,多出之数相当于白牛数的1/6+1/7。
在母牛中,白牛数是全体黑牛数的1/3+1/4;黑牛数是全体花牛数1/4+1/5;花牛数是全体棕牛数的1/5+1/6;棕牛数是全体白牛数的1/6+1/7。
问这牛群是怎样组成的?
通过了解知名数学难题的解题思路,并将其用于Python编程,提高我们的数学和编程水平。在我搜索的“100个数学难题”中第一个问题就是“群牛问题”,经过分析和研究,自觉颇有收获。
这是一道解不定方程组问题,有8个未知数,7个方程,有无数组解,我们可以求出最小正整数解。这个解数值较大,即使通过Python求最小正整数解也不容易。
按照编程解方程的惯性思路,方程的解可以使用枚举法去求。结果当Python程序运行后却没有输出结果(所有程序后面给出)。分析原因发现是因为解的数值过大,必须寻求更好的求解方法。
最普通的思路,不需要过多考虑,用枚举法一个个去测试(图1)。……