最高公因子(HCF)也称为gcd,可以使用math模块提供的单个函数在python中进行计算,因此可以使任务在许多情况下都更轻松。
天真的方法来计算gcd
- 使用递归:
- 使用循环
# Python code to demonstrate naive # method to compute gcd ( Loops ) def computeGCD(x, y): if x > y: small = y else: small = x for i in range(1, small+1): if((x % i == 0) and (y % i == 0)): gcd = i return gcd a = 60 b= 48 # prints 12 print ("The gcd of 60 and 48 is:",end="") print (computeGCD(60,48))
输出:
The gcd of 60 and 48 is:12
- 使用欧几里得算法
# Python code to demonstrate naive # method to compute gcd ( Euclidean algo ) def computeGCD(x, y): while(y): x, y = y, x % y return x a = 60 b= 48 # prints 12 print ("The gcd of 60 and 48 is:",end="") print (computeGCD(60,48))
输出:
The gcd of 60 and 48 is:12
# Python code to demonstrate naive
# method to compute gcd ( recursion )
def hcfnaive(a,b):
if(b==0):
return a
else:
return hcfnaive(b,a%b)
a = 60
b= 48
# prints 12
print ("The gcd of 60 and 48 is:",end="")
print (hcfnaive(60,48))
输出:
The gcd of 60 and 48 is:12
使用Python的math.gcd()函数
使用gcd()只需一行就可以计算相同的gcd。
math.gcd( x, y ) 参数: x: Non-negative integer whose gcd has to be computed. y:Non-negative integer whose gcd has to be computed. 返回值: This method will return an absolute/positive integer value after calculating the GCD of given parameters x and y. Exceptions: When Both x and y are 0, function returns 0, If any number is a character , Type error is raised.
# Python code to demonstrate gcd()
# method to compute gcd
import math
# prints 12
print ("The gcd of 60 and 48 is:",end="")
print (math.gcd(60,48))
输出:
The gcd of 60 and 48 is:12
常见例外
此函数中的一些常见异常是:
- 两个数字均为0,gcd为0
- 如果只有一个数字不是数字,则会引发Type Error。
# Python code to demonstrate gcd()
# method exceptions
import math
# prints 0
print ("The gcd of 0 and 0 is:",end="")
print (math.gcd(0,0))
# Produces error
print ("The gcd of a and 13 is:",end="")
print (math.gcd('a',13))
输出:
The gcd of 0 and 0 is:0 The gcd of a and 13 is:
运行时错误:
Traceback (most recent call last): File "/home/94493cdfb3c8509146254862d12bcc97.py", line 12, in print (math.gcd('a',13)) TypeError:'str' object cannot be interpreted as an integer
相关用法
注:本文由纯净天空筛选整理自 gcd() in Python。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。