注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

王海鹏廊坊师范学院信息技术提高班11期

人生如代码,代码如人生

 
 
 

日志

 
 
 
 

为我们的电脑考虑一下  

2014-04-21 22:03:54|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
今天又出糗事了:c语言课上,老师问:6的最大公约数是多少?我想都没想,大声的说:3!!老师下面的话引起课堂一阵哄笑:谁说3就是将小学的知识都忘了!一个数那里有最大公约数啊!搞了半天老师是在测试我们啊,我又中招了!!
关于最大公约数,自从学习了for循环,就思想呆滞的留下了一种解决方法:
scanf("%d\n",m);
scanf("%d\n",n);
if( n<m)
{
t=m;
m=n;
n=m;
}
for(i=2;i<=m;i++)
if(m%i==0&&n%i==0)
a=i;
printf("%d\n",a);
       其方法跟我用vb解决的方法一样:从2开始逐渐往下除,一直到m-1(m是两个数中较小的一个,先用一个if语句确保m是最小的!),将能被m除尽的因子用a不断来刷新。最后保存下a。
       缺点:这种方法虽遵循习惯,容易想到,但代码复杂,增加了电脑的计算量,使计算机的运算速度减慢!
下面我们稍作改进:倒着除!!
从m开始往上除m,m-1,m-2……,如果m能同时除尽m与n,那么m就是最大公约数了啊,那计算机就不用再往下计算了啊,大大减少了计算机的运算数量!
然后我们再做改进:利用小学的知识,辗转相除法:其语法规则是
x/y=a……b
如果b不为0.
x=y  y=b后再进行计算知道b等于0,最后的y就是最大公约数。
其优势:1.减少不必要的除法过程
2.不用再考虑m与n的大小,如:x=8  y=12  8/12=0……8
    第二步运算就变成12/8啦
不得不感叹,以前的算法虽然在编程过程中不容易回忆道,但可以大大简化计算机的运算量。
为我们的电脑考虑一下 - 王海鹏 - 王海鹏廊坊师范学院信息技术提高班11期
 
尽管计算机的运算速度很快,但好刀要用到刀刃上,让它执行更加复杂的数学计算上,而不是用到那些无用的计算上。如果让计算机来选,肯定会学择步骤少的来执行的,当我们在编程的过程中不再将计算机当做使用的工具,而将他当做我们生死与共的兄弟来对待,达到人机合一的话,我们的造诣一定会上升到更高的一个层次的!
突然想到我们的作品,好多窗体的都是用一个模子印出来的,一定有办法调用循环来解决这些无谓的琐事的!可是自己却懒得去想,懒得去实践,浪费了大量的时间与精力!真是得不偿失!
最后说一句,编程一定要多为电脑考虑一下,他是我们的兄弟,我们要生死与共!这样才有可能创造更加丰富的代码!

  评论这张
 
阅读(36)| 评论(30)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017