本问题记载于中国古代约5—6世纪成书的《张邱建算经》中,是原书卷下第38题,也是全书的最后一题:“今有鸡翁一,值钱伍;鸡母一,值钱三;鸡鶵三,值钱一。凡百钱买鸡百只,问鸡翁、母、鶵各几何?答曰:鸡翁四,值钱二十;鸡母十八,值钱五十四;鸡鶵七十八,值钱二十六。又答:鸡翁八,值钱四十;鸡 母十一,值钱三十三,鸡鶵八十一,值钱二十七。又答:鸡翁十二,值钱六十;鸡母四、值钱十二;鸡鶵八十 四,值钱二十八。”该问题导致三元不定方程组,其重要之处在于开创“一问多答”的先例,这是过去中国古算书中所没有的。
不定方程:
未知数个数多于方程个数,且对解有一定限制(比如要求解为正整数等)的方程。数论中最古老的分支之一。
研究不定方程要解决三个问题:①判断何时有解。②有解时决定解的个数。③求出所有的解。
见图片喽
编程实现:
穷举法
main()
{
int i,j,k;
for(i=1;i<=20;i++)
for(j=1;j<=33;j++)
for(k=3;k<=300;k+=3)
if(i*5+j*3+k/3==100 && i+j+k==100) printf("%d %d %d/n",i,j,k);
getch();
}
注:getch()的应用在这里,当你直接运行.exe文件时,就不会看不到结果而一闪而过了,他会等待你敲任意键,然后程序关闭。
其他
main( )
{
int cocks,hens,chicks;
cocks=0;
while(cocks<=19)
{
hens=0;
while(hens<=33)
{
chicks=100-cocks-hens;
if(5*cocks+3*hens+chicks/3==100&&chicks%3==0)
printf("%d,%d,%d/n",cocks,hens,chicks);
hens=hens+1;
}
cocks=cocks+1;
}
}