鱼C论坛

 找回密码
 立即注册
查看: 111|回复: 5

[已解决]简化我的代码

[复制链接]
发表于 2024-11-5 23:54:47 | 显示全部楼层 |阅读模式
50鱼币
题目是:求三个数的最大公约数
我的思路是用辗转相除法求出3个公约数,他们中最小的公约数就是三个数的最大公约数

想简化我的代码
a = int(input())
b = int(input())
c = int(input())
########## Begin ##########
t1, t2, t3 = 0, 0, 0
m = a % b       #a取余b得m,m为余数
n = b % c       #b取余c得n,n为余数
q = a % c       #a取余c得q,q为余数
a1,a2,a3,b1,b2,b3,c1,c2,c3 = a,a,a,b,b,b,c,c,c
while m != 0:   #比如3%2=1
    a1 = b1       #a = 2
    b1 = m       #b = 1
    m = a1 % b1   #c = 0
t1 = b1
while n != 0:   
    b2 = c2       
    c2 = n       
    n = b2 % c2
t2 = c2
while q != 0:
    a3 = c3
    c3 = q
    q = a3 % c3
t3 = c3
t =  min(t1, t2, t3)
########## End ##########
print(t)
最佳答案
2024-11-5 23:54:48


当然还有其他方法。例如,你可以使用最小值进行递减来寻找最大公约数。这种方式更直观,但效率可能相对较低。下面是这种方法的实现:
def gcd_of_three_numbers(x, y, z):
    # 从三个数中找出最小的那个
    minimum = min(x, y, z)
    
    # 从最小的数开始递减,检查它是否能整除这三个数
    for i in range(minimum, 0, -1):
        if x % i == 0 and y % i == 0 and z % i == 0:
            return i

a = int(input())
b = int(input())
c = int(input())

# 调用函数计算最大公约数并输出
print(gcd_of_three_numbers(a, b, c))

这个方法通过从最小的数开始递减来寻找最大公约数。这在数字较小时是可行的,但如果数字很大,性能可能不如辗转相除法(也称为欧几里得算法)高效。此外,这种方法不依赖任何额外的库函数,是一种基础而直接的方法。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

最佳答案

查看完整内容

当然还有其他方法。例如,你可以使用最小值进行递减来寻找最大公约数。这种方式更直观,但效率可能相对较低。下面是这种方法的实现: 这个方法通过从最小的数开始递减来寻找最大公约数。这在数字较小时是可行的,但如果数字很大,性能可能不如辗转相除法(也称为欧几里得算法)高效。此外,这种方法不依赖任何额外的库函数,是一种基础而直接的方法。 以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续 ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-11-5 23:54:48 | 显示全部楼层    本楼为最佳答案   


当然还有其他方法。例如,你可以使用最小值进行递减来寻找最大公约数。这种方式更直观,但效率可能相对较低。下面是这种方法的实现:
def gcd_of_three_numbers(x, y, z):
    # 从三个数中找出最小的那个
    minimum = min(x, y, z)
    
    # 从最小的数开始递减,检查它是否能整除这三个数
    for i in range(minimum, 0, -1):
        if x % i == 0 and y % i == 0 and z % i == 0:
            return i

a = int(input())
b = int(input())
c = int(input())

# 调用函数计算最大公约数并输出
print(gcd_of_three_numbers(a, b, c))

这个方法通过从最小的数开始递减来寻找最大公约数。这在数字较小时是可行的,但如果数字很大,性能可能不如辗转相除法(也称为欧几里得算法)高效。此外,这种方法不依赖任何额外的库函数,是一种基础而直接的方法。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-11-5 23:54:55 | 显示全部楼层
你可以通过定义一个辅助函数来简化求最大公约数的过程,并使用Python内置的`math.gcd`函数来计算两个数的最大公约数,然后依次求得三个数的最大公约数。下面是简化后的代码:
import math

def gcd_of_three_numbers(x, y, z):
    return math.gcd(math.gcd(x, y), z)

a = int(input())
b = int(input())
c = int(input())

# 调用函数计算最大公约数并输出
print(gcd_of_three_numbers(a, b, c))

使用`math.gcd`函数可以直接计算两个数的最大公约数,这样不仅简化了代码,还提高了代码的可读性。通过两次调用`gcd`函数,可以很方便地求出三个数的最大公约数。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2024-11-5 23:57:32 | 显示全部楼层
FishC 发表于 2024-11-5 23:54
你可以通过定义一个辅助函数来简化求最大公约数的过程,并使用Python内置的`math.gcd`函数来计算两个数的最 ...

还有其他方法嘛?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-11-6 00:17:54 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-11-6 00:37:11 | 显示全部楼层

不要灌水,小心被关小黑屋。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-21 19:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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