有趣的代码是很多的,所以接着上一篇,这一篇再和大家分享一些有故事背景的程序设计。
目录
1.百元买百鸡问题
已知公鸡5元一只,母鸡3元一只,小鸡一元三只,花一百元钱买100只鸡,请问公鸡、母鸡、小鸡各有多少只?
很明显这是一个小学的数学应用题(其实,我也忘了三元一次方程是啥时候学的了😳),我们只需要列出两个三元一次方程,就可以简单解出来,那么怎么编写程序解决这个问题呢?其实,我们还是用方程式,但是是通过遍历找出满足方程式的值。
算法实现如下:
设变量x表示公鸡的个数,y表示母鸡的个数,z表示小鸡的个数,count表示解的个数。
1.初始化解的个数count=0;
2.循环变量x从0~20循环执行下属操作(关于为什么最大值是20,大家利用数学知识就很容易明白,而且这样就助于减少没必要的运算量)
2.1循环变量y从0~33循环执行下述操作:
2.1.1 z = 100 - x - y;
2.1.2 若5 * x + 3 * y + z / 3等于100,则count++;输出x,y,z的值;
2.1.3 y++;
2.2 x++;
3.如果count等于0,则输出无解信息。
代码实现如下:
#include<stdio.h>
int main()
{
int x , y , z ;
int count = 0 ;
for(x = 0 ; x <= 20 ; x++)
{
for(y = 0 ; y<= 33 ; y++)
{
z = 100 -x -y;
if((z % 3 == 0) && (5 * x + 3 * y + z / 3) ==100)
{
count++;
printf("第%d种情况为:公鸡有%d只,母鸡有%d只,小鸡有%d只\n", count , x , y , z );
}
}
}
if(count == 0)
printf("问题无解\n");
return 0;
}
2.哥德巴赫猜想
哥德巴赫猜想:在任意大于2的偶数可以分解为两个素数之和,哥德巴赫猜想是世界著名的数学难题,请验证哥德巴赫猜想。
根据哥德巴赫猜想,我们可以知道只要判断大于2的偶数可以等于两个素数之和即可,那么我们最好建立一个判断是否是素数的函数。
算法实现如下:
设变量n表示偶数,将n分解为n1和n2
1.n1从2~n/2循环执行下述操作
1.1如果n1不是素数,则n1++,重复步骤1.1试下一组数;
1.2n2 =