最大公约数计算python代码_python求公因数

最大公约数计算python代码_python求公因数在 Python 中 求两个数的最大公约数 GCD 可以使用多种算法 以下是几种常见的算法及其 Python 实现 穷举法 pythondef gcd exhaustive a b if a b smaller b else smaller a for i in range 1 smaller 1 if a i 0 and b i 0

在Python中,求两个数的最大公约数(GCD)可以使用多种算法,以下是几种常见的算法及其Python实现:

穷举法

python

def gcd_exhaustive(a, b):

if a > b:

smaller = b

else:

smaller = a

for i in range(1, smaller + 1):

if (a % i == 0) and (b % i == 0):

gcd = i

return gcd

辗转相除法(欧几里得算法)

python

def gcd_euclidean(a, b):

while b != 0:

a, b = b, a % b

return a

更相减损法

python

def gcd_subtraction(a, b):

if a == b:

return a

elif a > b:

return gcd_subtraction(a - b, b)

else:

return gcd_subtraction(a, b - a)

使用内置`math`库的`gcd`函数

python

import math

def gcd_math_library(a, b):

return math.gcd(a, b)

短除法

python

def gcd_short_division(a, b):

m, n = a, b

t = 1

while m != n:

if m > n:

m -= n

else:

n -= m

t *= m

return t

质因数分解法

python

from collections import Counter

def PrimeNum(num):

r_value = []

for i in range(2, num + 1):

for j in range(2, i):

if i % j == 0:

break

else:

r_value.append(i)

return r_value

def PrimeFactorSolve(num, prime_list):

for n in prime_list:

if num % n == 0:

return [n, num // n]

return [num, 1]

def PrimeDivisor(num):

num_temp = num

prime_range = PrimeNum(num)

ret_value = []

while num not in prime_range:

factor_list = PrimeFactorSolve(num, prime_range)

ret_value.append(factor_list)

num = factor_list

else:

ret_value.append(num)

return Counter(ret_value)

def MaxDivisor(num1, num2):

dict1 = PrimeDivisor(num1)

dict2 = PrimeDivisor(num2)

max_divisor = 1

for key in dict1:

if key in dict2:

max_divisor = max(max_divisor, dict1[key] * dict2[key])

return max_divisor

以上代码展示了使用不同方法计算最大公约数的Python实现。你可以根据具体需求选择合适的方法。需要注意的是,使用内置的`math.gcd`函数通常是最高效的选择

编程小号
上一篇 2026-05-07 12:10
下一篇 2026-05-07 12:06

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://sigusoft.com/bj/45528.html