Calculeu i obteniu el màxim comú divisor i el mínim comú múltiple en Python

Negocis

A continuació es mostra una descripció de com calcular i obtenir el màxim comú divisor i el mínim comú múltiple en Python.

  • Màxim comú divisor i mínim comú múltiple de dos nombres enters
  • El màxim comú divisor i el mínim comú múltiple de tres o més nombres enters

Tingueu en compte que les especificacions de les funcions proporcionades a la biblioteca estàndard difereixen segons la versió de Python. En aquest article també es mostra un exemple d’implementació d’una funció que no es troba a la biblioteca estàndard.

  • Python 3.4 o anterior
    • GCD:fractions.gcd()(només dos arguments)
  • Python 3.5 o posterior
    • GCD:math.gcd()(només dos arguments)
  • Python 3.9 o posterior
    • GCD:math.gcd()(admet més de tres arguments)
    • mínim comú denominador:math.lcm()(admet més de tres arguments)

Aquí expliquem el mètode utilitzant la biblioteca estàndard de Python; NumPy es pot utilitzar fàcilment per calcular el màxim comú divisor i el mínim comú múltiple per a cada element de múltiples matrius.

Màxim comú divisor i mínim comú múltiple de dos nombres enters

GCD

Des de Python 3.5, hi ha una funció gcd() al mòdul de matemàtiques. gcd() és un acrònim de

  • greatest common divisor

Retorna el màxim comú divisor de l’enter especificat a l’argument.

import math

print(math.gcd(6, 4))
# 2

Tingueu en compte que a Python 3.4 i anteriors, la funció gcd() es troba al mòdul de fraccions, no al mòdul matemàtic. les fraccions s’han d’importar i fractions.gcd().

mínim comú denominador

La funció lcm(), que retorna el mínim comú múltiple, es va afegir al mòdul matemàtic de Python 3.9. lcm és un acrònim de

  • least common multiple

Retorna el mínim comú múltiple de l’enter especificat a l’argument.

print(math.lcm(6, 4))
# 12

Abans de Python 3.8, lcm() no es proporciona, però es pot calcular fàcilment mitjançant gcd().

lcm(a, b) = a * b / gcd(a, b)

Exemple d’implementació.

def my_lcm(x, y):
    return (x * y) // math.gcd(x, y)

print(my_lcm(6, 4))
# 12

/Com que això dóna com a resultat un decimal flotant, s’utilitzen dues barres invertides per truncar el punt decimal i retornar un resultat de divisió enter. Tingueu en compte que no es fa cap processament per determinar si l’argument és un nombre enter o no.

El màxim comú divisor i el mínim comú múltiple de tres o més nombres enters

Python 3.9 o posterior

A partir de Python 3.9, totes les funcions següents admeten més de tres arguments.

  • math.gcd()
  • math.lcm()
print(math.gcd(27, 18, 9))
# 9

print(math.gcd(27, 18, 9, 3))
# 3

print(math.lcm(27, 9, 3))
# 27

print(math.lcm(27, 18, 9, 3))
# 54

*Si voleu calcular el màxim comú divisor o el mínim comú múltiple dels elements d’una llista, especifiqueu l’argument amb això.

l = [27, 18, 9, 3]
print(math.gcd(*l))
# 3

print(math.lcm(*l))
# 54

Python 3.8 o anterior

Abans de Python 3.8, la funció gcd() només suportava dos arguments.

Per trobar el màxim comú divisor o el mínim comú múltiple de tres o més nombres enters, no es requereix cap algorisme especialment complicat; només cal calcular el màxim comú divisor o el mínim comú múltiple per a cadascun dels múltiples valors al seu torn mitjançant la funció d’ordre superior reduce().

GCD

from functools import reduce

def my_gcd(*numbers):
    return reduce(math.gcd, numbers)

print(my_gcd(27, 18, 9))
# 9

print(my_gcd(27, 18, 9, 3))
# 3

l = [27, 18, 9, 3]
print(my_gcd(*l))
# 3

De nou, tingueu en compte que abans de Python 3.4, la funció gcd() es troba al mòdul de fraccions, no al mòdul matemàtic.

mínim comú denominador

def my_lcm_base(x, y):
    return (x * y) // math.gcd(x, y)

def my_lcm(*numbers):
    return reduce(my_lcm_base, numbers, 1)

print(my_lcm(27, 9, 3))
# 27

print(my_lcm(27, 18, 9, 3))
# 54

l = [27, 18, 9, 3]
print(my_lcm(*l))
# 54