📜  Python中的 gcd()

📅  最后修改于: 2022-05-13 01:55:21.001000             🧑  作者: Mango

Python中的 gcd()

最高公因数 (HCF) 也称为 gcd,可以使用数学模块提供的单个函数在Python中计算,因此可以在许多情况下使任务更容易。

计算 gcd 的朴素方法

  1. 使用递归:
  2. # 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
    

  3. 使用循环
  4. # 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
    

  5. 使用欧几里得算法
    # 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的 math.gcd()函数


    使用 gcd() 可以只用一行计算相同的 gcd。
    math.gcd( x, y )
    Parameters : 
    x :  Non-negative integer whose gcd has to be computed.
    y : Non-negative integer whose gcd has to be computed.
    Return Value : 
    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
    • 如果只有一个数字不是数字,则会引发类型错误。
    # 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