|
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)
复制代码
当然还有其他方法。例如,你可以使用最小值进行递减来寻找最大公约数。这种方式更直观,但效率可能相对较低。下面是这种方法的实现:
- 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 小助理,如未能正确解答您的问题,请继续 ...
|