编程之战第十二章 丢番图方程
来源:互联网 发布:反爆吧软件 编辑:程序博客网 时间:2024/06/05 05:26
在杨成的软磨硬泡,威逼利诱之下,“皮卡丘系统”终于作出决定,把杨成送到有海景的地方去看海。
古希腊亚历山大港,地中海气候给这里带来了丰沛的降水,这里尤其以盛产数学家和哲学家闻名,其中最富盛名的数学家自然包括丢番图。
海港边一座并不起眼的小茅屋,晚上睡在这里能听到海浪轻轻拍打礁石的声音,这里居住着年迈的丢番图和他的弟子。
“老师请用”,杨成用一个小碗装满煮沸的清水,递给一位老者。
老者年过八旬,唯一的儿子先他而去,所有的寄托就在这个弟子身上了。
丢番图喝了一小口清水,看着眼前这个弟子,眼中充满了慈爱。
“徒弟,为师今天要考考你,所学如何?”
“老师尽管吩咐”,杨成毕恭毕敬地侍立在一旁。
丢番图拿起一块松软的石膏,在墙壁上颤巍巍地一笔一划,写出一个方程式。
“已知x² - 4y² = n,n为已知,则x,y作何解?”
杨成看到这方程的第一眼,就明白老师的意思了,他这是在考自己如何求出正整数解来。
毕竟这个时代,还停留在正有理数求解阶段。
“你不要急着做,先慢慢想一下,老师先出去走走”,说完,丢番图拄着木杖,缓缓地出了门。
这是一个著名的丢番图方程,或者说是不定方程。
当杨成看到这个方程的左边x²- 4y²,他就有种感觉,它可以转化为(x - 2y) * (x + 2y),而且这必然是第一步。因为等式右边的常量N,它有可能是一个很大的数,如果用穷举法,效率是很低的。但可以尝试分解这个常量,把它因式分解成两项。
比方说,N=24,分解成两项有如下的可能:
[1,24] , [2,12] , [3,8] , [4,6]
拿这些可能的项往式子上套,便可得四个方程组:
x - 2y = 1
x + 2y = 24
--------------
x - 2y = 2
x + 2y = 12
--------------
x - 2y = 3
x + 2y = 8
--------------
x - 2y = 4
x + 2y = 6
这样就转化成了求四个二元一次方程。
最后,再选取其中的正整数解即可。
杨成调出系统编辑器,把这个求解过程写成了一个通用的函数,无论N是什么,都可以通过这个函数来求解。
墙壁上,丢番图所写的那个方程式慢慢地被金色的线条所环绕。
“叮!”,系统声音响起来。
“恭喜您完成了丢番图方程求解任务!”
“先前积分24分”。
“因式分解求丢番图方程奖励2分”。
“当前积分26分,击败了全球16%的玩家,请您再接再厉!”
“成哥好棒喔!”,“皮卡丘系统”谄媚地说着肉麻的话,浑然不顾自己GM的身份。
“少拍哥哥马屁了”,杨成白了系统一眼。
“真想帮哥哥做点实事的话”,杨成话锋一转,面露狡黠之色。
“给我安排个希腊妹子晚上过来耍耍啊!”
“呃~”,皮卡丘一时语塞。
“成哥,要不要继续来玩玩啊?”,这人工智能系统犹如皮条客般怂恿着杨成。
- 编程之战第十二章 丢番图方程
- 第十二章:Swing编程
- 第十二章 并发编程
- 第十二章 编程练习
- 朱金付第十二章编程
- 编程珠玑第十二章--应用之取样问题
- Windows Shell 编程 第十二章
- Windows Shell 编程 第十二章
- 第十二章 面向语言编程
- 第十二章 APO编程语言
- 第十二章编程练习(1)
- 第十二章编程练习(2)
- 第十二章编程练习(3)
- 编程珠玑第十二章习题
- 第十二章编程练习(5)
- 第十二章编程练习(6)
- 第十二章之异步查询
- Linux学习之第十二章
- eclipse 调试时出现!MESSAGE Could not find bundle: org.eclipse.equinox.console解决办法
- mybatis传入多个参数
- 德州仪器发布99%高效GaN逆变器功率级的参考设计
- JavaScript语言应用
- 歌颂Spring,我太爱它了
- 编程之战第十二章 丢番图方程
- python通过session模拟请求后访问某个地址,保留访问cookie
- STM32系统定时器SysTick
- coreseek生成索引、合并建主索引和增量索引、重建整个索引详解
- Android三种动画(属性、视图、帧动画)介绍基本使用
- 6/30作业:接口的基本语法
- 指针还是引用
- Visual Studio + VAssistX常用快捷键
- 基于ATtiny85轻松制作一款智能手表