41.马克思手中的数学题.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
41.马克思手稿中的数学题 马克思手稿中有一道趣味数学问题:有30个人,其中有男人、女人和小孩,在一家饭馆吃饭花了50先令;每个男人花3先令,每个女人花2先令,每个小孩花1先令;问男人、女人和小孩各有几人? *问题分析与算法设计 设x,y,z分别代表男人、女人和小孩。按题目的要求,可得到下面的方程: x+y+z=30 (1) 3x+2y+z=50 (2) 用方程程序求此不定方程的非负整数解,可先通过(2)-(1)式得: 2x+y=20 (3) 由(3)式可知,x变化范围是0~10 *程序说明与注释 #includestdio.h int main() { int x,y,z,count=0; printf( Men Women Children\n); printf(………………………………….\n); for(x=0;x=10;x++) { y=20-2*x; /*x定值据(3)式求y*/ z=30-x-y; /*由(1)式求z*/ if(3*x+2*y+z==50) /*当前得到的一组解是否满足式(2)*/ printf( %2d: %d %d %d\n,++count,x,y,z); } } ? ?42.最大公约数和最小公倍数 求任意两个正整数的最大公约数和(GCD)和最小公倍数(LCM) 问题分析与算法设计 手工方式求两个正整数的蝚大公约数的方法是用辗转相除法,在程序中可以模拟这种方式。 *程序说明与注释 #includestdio.h int main() { int a,b,num1,num2,temp; printf(Input a b:); scanf(%d%d,num1,num2); if(num1num2) /*找出两个数中的较大值*/ { temp=num1; num1=num2; num2=temp; /*交换两个整数*/ } a=num1; b=num2; while(b!=0) /*采用辗转相除法求最大公约数*/ { temp=a%b; a=b; b=temp; } printf(The GCD of %d and %d is: %d\n,num1,num2,a); /*输出最大公约数*/ printf(The LCM of them is: %d\n,num1*num2/a); /*输出最小公倍数*/ } *运行结果 1.Input a b: 20 55 The GCD of 20 and 55 is: 5 The LCM of them is: 220 2.Input a b: 17 71 The GCD of 17 and 71 is: 1 The LCM of them is: 1207 3.Input a b: 24 88 The GCD of 24 and 88 is: 8 The LCM of them is: 264 4.Input a b: 35 85 The GCD of 35 and 85 is: 5 The LCM of them is: 595 *思考题 求一个最小的正整数,这个正整数被任意n(2=n=10)除都是除不尽的,而且余数总是(n-1)。例如:被9除时的余数为8。要求设计一个算法,不允许枚举与除2、除3、….、除9、除10有关的命令,求出这个正整数。 43.分数比较 比较两个分数的大小。 *问题分析与算法设计 人工方式下比较分数大小最常用的方法是:进行分数的通分后比较分子的大小。可以编程模拟手式方式。 *程序说明与注释 #includestdio.h int zxgb(int a,int b); int main() { int i,j,k,l,m,n; printf(Input two FENSHU:\n); scanf(%d/%d,%d/%d,i,j,k,l); /*输入两个分数*/ m=zxgb(j,l)/j*i; /*求出第一个分数通分后的分子*/ n=zxgb(j,l)/l*k; /*求出第二个分数通分后的分子*/ if(mn) printf(%d/%d%d/%d\n,i,j,k,l); /*比较分子的大小*/ else if(m==n) printf(%d/%d=%d/%d\n,i,j,k,l); /*输出比较的结果*/ else printf(%d/%d%d/%d\n,i,j,k,l); } int zxgb(int a,int b) { long int c; int d; if(ab) c=a,a=b,b=c; /*若ab,则交换两变量的值*/ for(c=a*b;b!=0;) { d=b; b=a%b; a=d; } return (int)c/a; } *运行结果 输入: 4/5,6/7 输出: 4/56/7 输入: 8/4,1

文档评论(0)

l215322 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档