百雞問題是一個數學問題,出自中國古代約5—6世紀成書的《張邱建算經》,是原書卷下第38題,也是全書的最后一題。該問題導致三元不定方程組,其重要之處在於開創“一問多答”的先例。
題:今有雞翁一,值錢伍;雞母一,值錢三;雞鶵三,值錢一。
問:凡百錢買雞百只,問雞翁、母、鶵各幾何?
解:x+y+z=100;5x+3y+z/3=100
代碼實現:
1、使用while嵌套循環。注意變量初值設置,以及循環條件。
#coding=utf-8 chickNum=[['公雞','母雞','小雞']] #公雞5元一只,數量x不大於20 x=0 while x<=20 : # 母雞3元一只,數量y不大於30 y=0 while y<=30 : # 共買100只雞 z=100-x-y # 小雞數量z為3的整數,且5x+3y+z/3=100 if z%3==0 and 5*x+3*y+z/3==100 : # 將符合條件的答案添加到列表 chickNum.append([x,y,z]) y+=1 x+=1 #打印解題結果 print('\'百元買百雞\'共有%d種方案:'%(len(chickNum)-1)) print() for i in chickNum : for j in i : print(j,end='\t') print()
2、使用for循環。更簡潔、明了。
#coding=utf-8 chickNum=[['公雞','母雞','小雞']] #公雞5元一只,數量x不大於20 for x in range(0,20) : # 母雞3元一只,數量y不大於30 for y in range(0,30) : # 共買100只雞 z=100-x-y # 小雞數量z為3的整數,且5x+3y+z/3=100 if z%3==0 and 5*x+3*y+z/3==100 : # 將符合條件的答案添加到列表 chickNum.append([x,y,z]) #打印解題結果 print('\'百元買百雞\'共有%d種方案:'%(len(chickNum)-1)) print() for i in chickNum : for j in i : print(j,end='\t') print()
