百雞問題

出自《張邱建算經》的數學題

百雞問題是一個數學問題,出自中國古代約5—6世紀成書的《張邱建算經》,是原書卷下第38題,也是全書的最後一題,該問題導致三元不定方程組,其重要之處在於開創“一問多答”的先例。

問題


今有雞翁一,值錢伍;雞母一,值錢三;雞鶵三,值錢一。凡百錢買雞百隻,問雞翁、母、鶵各幾何?答曰:雞翁四,值錢二十;雞母十八,值錢五十四;雞鶵七十八,值錢二十六。又答:雞翁八,值錢四十;雞 母十一,值錢三十三,雞鶵八十一,值錢二十七。又答:雞翁十二,值錢六十;雞母四、值錢十二;雞鶵八十 四,值錢二十八。”

歷史淵源


原書沒有給出解法,只說如果少買7隻母雞,就可多買4隻公雞和3隻小雞。所以只要得出一組答案,就可以推出其餘兩組答案。中國古算書的著名校勘者甄鸞和李淳風註釋該書時都沒給出解法,只有約6世紀的算學家謝察微記述過一種不甚正確的解法。到了清代,研究百雞術的人漸多,1815年駱騰風使用大衍求一術解決了百雞問題。1874年丁取忠創用一個簡易的算術解法。在此前後時曰醇(約1870)推廣了百雞問作《百雞術衍》,從此百雞問題和百雞術才廣為人知。百雞問題還有多種表達形式,如百僧吃百饅,百錢買百禽等。宋代楊輝算書內有類似問題,中古時近東各國也有相仿問題流傳。例如印度算書和阿拉伯學者艾布·卡米勒的著作內都有百錢買百禽的問題,且與《張邱建算經》的題目幾乎全同。
解法
數學解法
現代數學觀點來看,實際上是一個求不定方程整數解的問題。解法如下:
設公雞、母雞、小雞分別為x、y、z 只,由題意得:
①……
②……5x+3y+(1/3)z =100
有兩個方程,三個未知量,稱為不定方程組,有多種解。
令②×3-①得:7x+4y=100;
所以y=(100-7x)/4=25-2x+x/4
令x/4=t, (t為整數)所以x=4t
把x=4t代入7x+4y=100得到:y=25-7t
易得z=75+3t
所以:x=4t
y=25-7t
z=75+3t
因為x,y,z為正整數
所以4t大於0
25-7t大於0
75+3t大於0
解得t大於0小於等於25/7 又因為t為整數
所以t=1時
x =4;y =18;z =78
當t=2時
x =8;y =11;z =81
當t=3時
x =12;y =4;z =84
C語言解法
輸出結果為:
公雞0隻,母雞25隻,小雞75隻
公雞4隻,母雞18隻,小雞78隻
公雞8隻,母雞11隻,小雞81隻
公雞12隻,母雞4隻,小雞84隻
java語言解法
C#語言解法
程序如下:
PHP語言解法
Java語言解法以及結果