鱼C论坛

 找回密码
 立即注册
查看: 2234|回复: 0

[技术交流] 用python实现九章算术——课分术

[复制链接]
发表于 2017-6-11 22:21:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 china25qd 于 2017-6-12 08:26 编辑

先来个简单的,小明式的代码:
  1. def kf(firstfraction, secondfraction):
  2.    
  3.     '九章算术之课分术\n'
  4.     '课分术曰:母互乘子,以少减多,馀为实,母相乘为法,实如法而一,即相多也。\n'
  5.     if firstfraction == secondfraction:
  6.         return "一样大,没有可比性!"
  7.     else:
  8.         talk = "%s 较大" % firstfraction if int(firstfraction.split('/')[0]) / int(firstfraction.split('/')[1]) > int(secondfraction.split('/')[0] / int(secondfraction.split('/')[1])else "%s 较大" % secondfraction
  9.     if firstfraction.split('/')[1] == secondfraction.split('/')[1]:
  10.         return talk + ",两者相差" + str(abs(firstfraction.split('/')[0] - secondfraction.split('/')[0])) + "/" + firstfraction.split('/')[1]
  11.     else:
  12.         Denominator = int(firstfraction.split('/')[1]) * int(secondfraction.split('/')[1])#母相乘
  13.         molecule = abs((int(firstfraction.split('/')[0]) * int(secondfraction.split('/')[1])) - (int(secondfraction.split('/')[0]) * int(firstfraction.split('/')[1])))#母互乘子,以少减多
  14.         
  15.         return talk + ",两者相差" + str(int(molecule / gcd(Denominator, molecule))) + "/" + str(int(Denominator / gcd(Denominator, molecule)))#调用更相减损术约一下分
  16.         

  17. a = input("请输入第一个数:")
  18. b = input("请输入第二个数:")
  19. print("%s 和%s 两数%s " % (a, b, kf(a,b)))
复制代码


更相减损术代码通道

运行结果:
  1. 请输入第一个数:22/40
  2. 请输入第二个数:33/50
  3. 22/40 和33/50 两数33/50 较大,两者相差11/100
复制代码


@小甲鱼 @福禄娃娃 @冬雪雪冬

评分

参与人数 1鱼币 +2 收起 理由
小甲鱼 + 2 支持楼主!

查看全部评分

本帖被以下淘专辑推荐:

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-22 03:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表