鱼C论坛

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

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

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

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

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

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

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

a = input("请输入第一个数:")
b = input("请输入第二个数:")
print("%s 和%s 两数%s " % (a, b, kf(a,b)))

更相减损术代码通道

运行结果:
请输入第一个数:22/40
请输入第二个数:33/50
22/40 和33/50 两数33/50 较大,两者相差11/100 

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

评分

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

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-24 20:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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