看了这篇《没有定理的中国古代数学,如何站在世界之巅?》。虽然我觉得题目很标题党,不过里面的内容很有趣啊,讲解了中国古代数学里的几个算法。由于我正在学Python,所以自然就拿来练手了。

可以运行的代码在这里

更相减损术

“术曰:以少减多,更相减损,求其等也。”

def 更相减损术(a,b):

while (a != b):

if a > b:

a=a-b

else :

b=b-a

return a

这个很好写啦,读入两个数a和b,求其等也,就是一直要求到两个数相等为止。

所以用条件循环while,当a不等于b时就一直重复算。算什么呢,以少减多,就是判断一下谁大.

如果a>b, 就用a-b替换a,否则就用b-a替换b。

一直到两个数减到相等为止,就可以随便返回其中一个数作为最大公约数了。

大衍求一术

这个好帅,是求解ax≡1(mod b)。就是说a乘以x除以b所得的余数等于1。详细的解说还是看那篇公众号的文章吧。

def 大衍求一术(a,b):

m=np.matrix( [ [a,1], [b,0] ] )

while (m[0,0] != 1 ):

if m[0,0]>m[1,0]:

m[0,:]=m[0,:]-m[1,:]

else:

m[1,:]=m[1,:]-m[0,:]

if m[1,0]==1:

return 1

else:

return m[0,1]

因为打算用矩阵,所以要首先导入Numpy包,python很强大的一点就是有各种包,只要import一下就好像有了超能力。

大衍求一术要求先生成一个2*2的矩阵

a 1

b 0

这样的,所以先用np.matrix产生一个矩阵m,注意python的序数是从0开始的,所以m[0,0]=a, m[0,1]=1, m[1,0]=b, m[1,1]=0。

然后跟前面的更相减损术差不多,也是减来减去,区别是以行为单位来减,终点是把a的位置变成1,比大小的时候是用左边那列的元素比大小。

所以如果m[0,0]>m[1,0],那就把上一行减去下一行m[0,:]-m[1,:],再替换掉上面一行m[0,:]=m[0,:]-m[1,:]。反之亦然。一直重复,直到m[0,0] == 1。

通常是返回m[0,1]的数值就可以了。但有可能a,b互质,所以需要分情况讨论一下。

我的古文水平和编程水平都还不够高,不然把中国古代数学中的种种算法都写出程序也是一件很风雅的事情。

python中算法与数学_中国古代数学算法的Python实现相关推荐

  1. python中ht表示什么_如何看待某国内大公司Python面试题,有关dict中初始化为固定值?...

    职业发展 Python 如何看待某国内大公司Python面试题,有关dict中初始化为固定值? 阅读下面的代码,写出A0,A1至A6的最终值. A0 = dict(zip(('a','b','c',' ...

  2. python中不被定义_一日一技:在Python中双下划线私有方法不能被调用的原理

    一日一技:在Python中双下划线私有方法不能被调用的原理 在使用Python编写面向对象的代码时,我们会常常使用"继承"这种开发方式.例如下面这一段代码: class Info: ...

  3. python中如何移动图形工作站_六招教你用Python分分钟构建好玩的深度学习应用

    原标题:六招教你用Python分分钟构建好玩的深度学习应用 导读]深度学习是近来数据科学中研究和讨论最多的话题.得益于深度学习的发展,数据科学在近期得到了重大突破,深度学习也因此得到了很多关注.据预测 ...

  4. python中exception类的_面试题 | 列举几个Python中的标准异常类?

    [摘要]今天给大家解答一道Python常见的面试题,希望这个面试栏目,给那些准备面试的同学,提供一点点帮助!小编会从最基础的面试题开始,每天一题.如果参考答案不够好,或者有错误的话,麻烦大家可以在留言 ...

  5. 张莉python 玩转数据答案_中国大学MOOC(慕课)用Python玩转数据答案大全

    中国大学MOOC(慕课)用Python玩转数据答案大全 更多相关问题 All the neighbors admire the family _______ the parents are treat ...

  6. python中什么是异常_一文教你读懂 Python 中的异常信息

    在写 Python 代码的时候,当代码中出现错误,会在输出的时候打印 Traceback  错误信息,很多初学者看到那一堆错误信息,往往都会处于懵逼状态,脑中总会冒出一句,这都是些啥玩意.如果你是第一 ...

  7. python中 和 的区别_举例子让你明白python中is和==的区别

    在说 is 和 == 的区别之前,我们先理解下python的变量.python的变量和java的变量有很大的区别,因为一个是动态语言,另一个是静态语言. java的变量就像是个盒子,是把对象的地址装进 ...

  8. python中的标准输入设备_从MIDI设备获取输入(Python)

    PyGame包含一个内置的 midi module,可用于Linux,Windows和MacOS,并得到很好的支持. Input is used to get midi input from midi ...

  9. python中uss的用法_使用不同内存ussag管理Python多进程进程进程

    我认为试图捕捉并从OOM错误中恢复是非常困难的,如果不是不可能的话.你需要一个线程或进程来持续监控内存使用情况,当它检测到内存使用量太高时,会--确切地说是什么?终止正在处理任务的进程?尝试暂停它(如 ...

最新文章

  1. java 2分钟_java – 为什么我的应用程序启动时间超过2分钟?
  2. [Spring 深度解析]第3章 核心容器
  3. HDU 1004 Let the Balloon Rise
  4. Singleton模式
  5. CG CTF WEB 综合题
  6. python 调用控制台并获取返回结果_Java调用Python脚本并获取返回值
  7. Elasticseach 从零开始学习记录(三) - 分布式部署
  8. [OpenCV学习笔记3][图像的加载+修改+显示+保存]
  9. 空间复杂度和时间复杂度
  10. 基于java的开源游戏引擎
  11. 第二章 2.群中的等价关系 -- 陪集,共轭,正规子群与商群
  12. Qt 自定义tablewidget(背景色,标题箭头)
  13. 中国父母常犯的十大错误(转载)
  14. 【c++ primer】第五版第十六章习题答案
  15. PS学习及实践用例总结分享
  16. [hdu 6355] Fireflies
  17. 做外贸可以开海外店铺吗?可以开哪些平台?
  18. linux系统下王者荣耀,在Linux下可用Wine安装和运行腾讯手游助手、王者荣耀电脑版...
  19. 新书字码的差不多了,想众包几个事情
  20. $monitor, $strobe, $write以及$display的区别及使用场景

热门文章

  1. MATLAB--向量操作(1.3)
  2. xpath爬取我爱我家杭州地区租房网
  3. 【抽样:理论与应用】期末复习1
  4. 2022年全球市场交流运动控制器总体规模、主要生产商、主要地区、产品和应用细分研究报告
  5. tftpd32服务器软件在Windows与linux 下的文件传输(服务器ip 的设置问题)
  6. 怎样修改带密码的还原精灵
  7. 将已经分区的移动硬盘弄成启动WIN PE盘(一般无需要格式化) 并进行GHO或ISO原版安装系统(亲自制作成功)
  8. Verycd网站中不能显示下载网址的解决办法
  9. 巧用右键管家 清除右键菜单【乡巴佬】
  10. 高铁检测试验软件,京沪高铁试验检测项目