E书首页 - 下载 - 范文 - IT - 秘书 - 专家 - 创业 - 健康 - 百科 - 电影 - 娱乐 - 写真 - 英语 - 技术 - BBS - BLOG
IT资讯 | 业 界 | 互 联 网 | 通 信 | 人 物 | 数 码 | 软 件 | 硬 件 | 游 戏 | 技术百科 | 搜索引擎 | 操作系统
网络编程 | 网页设计 | 图形图像 | 网络媒体 | 网络安全 | 防 火 墙 | 站长必修 | 建站相关 | 数 据 库 | 服 务 器
游客登录 安全防范 NET专区 PHOTOSHOP专题 设为首页 加入收藏
您现在的位置: 中华E书网 >> IT学院 >> 网络编程 >> 其它相关 >> 正文
▎Java咖啡馆——Java语言基础(4)
Java咖啡馆——Java语言基础(4)
作者:佚名   文章来源:EBOOK-CN.COM   更新时间:2005-12-4 17:20:48
三、阳春白雪

    

  其实,这道题目颇有渊源。

  相传,春秋战国时,云梦山鬼谷洞中住了一个奇人名曰鬼谷子,精通天文、地理、兵法、算术,是兵家之府库,纵横家之鼻祖??孙膑、庞涓、苏秦、张仪、毛遂等都是他的学生。鬼谷子称自己的算术研究为鬼谷算,又叫隔墙算。这道题目便是鬼谷算中比较著名的题目之一,后现于《孙子算经》,又称为韩信点兵、秦王暗点兵、剪管术、大衍求一术等等。

  我国宋代学者对这类题目钻研已颇为精深,总结出了“三人同行七十稀,五树梅花廿一枝,七子团圆正半月,去百零五便得知”这样的口诀,意思是说“以三三数之,余数乘以七十;五五数之,余数乘以二十一;七七数之,余数乘十五。三者相加,如不大于一百零五,即为答数;否则须减去一百零五或其倍数。”这样,很快就能知道答案为23。

  不得不承认,跟上面的那些古人的方法相比,我们的程序虽然能够比他们更快地得到23这个解,但是严格来讲,我们的程序并不能算作是一个算法,不过是小学生级别的“暴力破解”而已。学习编程不能够仅仅停留在这种程度,让我们开动大脑,玩玩智慧游戏。

  设这个数字是x,把题目写成方程式就是这样:

3a + 2 = x
5b + 3 = x
7c + 2 = x

  你看,三个联立方程四个变量,不定方程肯定有无穷答案,23只是100以内惟一的一个解。
心算快的朋友一下子就可以这样得到答案:除以三和除以七都余二,则这个数字除以二十一必定也是余二,二十三除以二十一余二,而且二十三除以五恰好余三,问题解决了。不过,如果不是3、5、7等小数字,心算再快也不够用啊。

  其实,早在春秋年间,已经有了解题的算法,也就是西方数学家所谓的中国剩余定理(Chinese Remainder Theory)。具体的推理过程涉及太多抽象代数的知识,这里只写出最后的通解公式:

x = 70 * 2 + 21 * 3 + 15 * 2 + 105 * n

  当n=-2时,便得到x=23这个最小解。

  Just do it

  试试看把中国剩余定理的算法用Java编写出程序,打印前1000个满足题意的数字;然后用我们最初的算法打印前1000个满足题意的程序(提示:只要改变for语句的终止判断,到104918结束),比较两者之间的速度差别。

  再扩展开去,中国剩余定理在符号计算中起着重要作用。比如我们都知道2/3,有理数是一种精确的表示。但用Java表示2/3就会变成0.6666667这样的数值数,是不精确的表示。不过,符号计算会带来巨大的复杂度,必须放到一个域中才能够限制住难度,这就要用到中国剩余定理。老祖宗给我们留下丰厚的智慧遗产,有兴趣的朋友可以看看计算代数

[1] [2] 下一页

  • 上一篇文章:

  • 下一篇文章:

  • 相关文章
    精通数据库系列之入门-技巧篇5
    精通数据库系列之入门-技巧篇4
    精通数据库系列之入门-技巧篇3
    精通数据库系列之入门-技巧篇2
    精通数据库系列之入门-技巧篇1
    Oracle与SQL Server在企业应用中的比较…
    数据库名词解释
    公文转发流程自定义的数据建模
    《数据建模》读书笔记
    Transact_SQL小手册,适合初学者
    select返回记录的顺序
    FreeBSD下安装PostgreSQL新手教程
    虚拟主机 | 数据恢复 | 操作系统
    网络游戏 | 液晶电视 | 数码相机
    电子商务 | 思科认证 | 系统集成
    防 火 墙 | 服 务 器 | 路 由 器
    ▎编辑推荐
    ▎最新热门
    ▎合作链接

    | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | |
    建议使用IE5.5以上版本浏览-感谢263数据中心 提供技术支持
    中华E书网 版权所有 本站通用网址:中华E书网
    沪ICP备05001118号