
赫洛伊丝正在计划一次聚餐,她准备了84个小面包。虽然聚餐时她自己不吃,但她总是准备恰好足够数量的小面包,使每个客人分到的数量正好相同。她邀请的客人数量有哪些可能?

我的解法:
一、信息
一共84个面包
他总备好了足够数量的面包使得每个客人分到的数量刚好
本题的最终目标是求出他邀请的客人数量有哪些?
二、分析
问题1告诉我面包的总数
问题2我们可以用抽象的方法把问题用转换的思想转化为整除问题,如果客人分到的面包数量正好相同等价于客人的数量正好整除面包的数量,那么问题就变成了能整除84有多少个数,就有多少个客人。
三、步骤
1.我的想法是对84进行因式分解,84=2*2*21(这里写错了没有把21再分解应该是1*2*2*3*7)再通过枚举法筛除重复的,得到答案2,4,21,42,84客人的数量有上诉的可能。
正确答案:
分析:
表面上看起来,这像个代数问题,并可按照代数列式如下:
令x=赫洛伊丝邀请的客人数目,
令y=每位客人分到的小面包数目
于是得到——xy=84.
这个方程有许多组解;事实上,有无穷多组解。选择每个非零的x值,会令y=84/x即得一组解。例如x=5,y=就是方程的一组解;
x=-2,=-42 同样也是。但这两组解都不符合题目要求。客人不能吃分数个小面包,容人的数目也不可能是负数。也就是说,为了解决例题4.1,我们只考虑x和,-都是正整数的解。显然*=1,1=84是一个解,
5=2,y=42是另一个解。还有更多的解吗?如果有,我们如何确保找到了所有的解?在我们尝试回答之前,先观察例题 4.2我们遇到了类似的情况。
正确答案:
1、2、3、4、6、7、12、14、21、28、42 和 84。
扩展:
这个问题其实就是C语言中的因式分解问题
扩展:
问题能否通过程序写出当面包数为n时客人的数量?
显然是可以的这就是常见的C语言因式分解问题
我的解法:
C语言法:
#include <stdio.h>
int main()
{
int n;
printf("请输入一个整数n:");
scanf("%d", &n);
printf("%d的因数有:", n);
for (int i = 1; i <= n; i++) //把1到n都遍历一遍即枚举法
{
if (n % i == 0) //如果能整除n那么输出
{
printf("%d ", i);
}
}
printf("\n");
return 0;
}
反思:
(1)本人因式分解的时候没有分解完全,以后要多加注意了,反映了本人思维的不严谨,以后做出答案都要验算一遍
