【基础入门题043】最大公约数

简介: 【基础入门题043】最大公约数

【基础入门题】2021.12.09


给定两个正整数数,求这两个数的最大公约数。


编程语言:包括但不限于Python

题目来源:派森特给站每日刷题频道

————————————————

方法一:for循环

def GCD(m, n):
    gcd = 1 # 此行可以省略
    for i in range(1,min(m, n)+1):
        if m%i==0 and n%i==0:
            gcd = i
    return gcd
print(GCD(81,3))
print(GCD(81,15))
print(GCD(81,54))



方法二:while循环

def GCD(m, n):
    while m!=n:
        if m>n: m -= n
        else: n -= m
    return m
print(GCD(81,3))
print(GCD(81,15))
print(GCD(81,54))



方法三:递归法

def GCD(m, n):
    if n==0: return m
    return GCD(n, m%n)
print(GCD(81,3))
print(GCD(81,15))
print(GCD(81,54))



方法四:辗转相除法

def GCD(m, n):
    while n!=0:
        m, n = n, m%n
    return m
print(GCD(81,3))
print(GCD(81,15))
print(GCD(81,54))


方法五:递减法

def GCD(m, n):
    gcd = min(m, n)
    while m%gcd or n%gcd:
        gcd -= 1
    return gcd
print(GCD(81,3))
print(GCD(81,15))
print(GCD(81,54))



方法六:库函数math.gcd

from math import gcd
print(gcd(81,3))
print(gcd(81,15))
print(gcd(81,54))




或者:直接用 __import__('math').gcd

1. __import__('math').gcd(81,3)
2. __import__('math').gcd(81,15)
3. __import__('math').gcd(81,54)




方法七:约分法,库函数fractions.Fraction()

def GCD(m, n):
    from fractions import Fraction
    return m//Fraction(m, n).numerator #取分子
    #return n//Fraction(m, n).denominator #或取分母
print(GCD(81,3))
print(GCD(81,15))
print(GCD(81,54))

以上方法的答案均为 3,3,27。

目录
相关文章
【java每日一题,数论】最大公约数,最大质因数,欧拉筛
【java每日一题,数论】最大公约数,最大质因数,欧拉筛
|
1月前
|
算法 C语言
【C语言程序设计——函数】利用函数求解最大公约数和最小公倍数(头歌实践教学平台习题)【合集】
本文档介绍了如何编写两个子函数,分别求任意两个整数的最大公约数和最小公倍数。内容涵盖循环控制与跳转语句的使用、最大公约数的求法(包括辗转相除法和更相减损术),以及基于最大公约数求最小公倍数的方法。通过示例代码和测试说明,帮助读者理解和实现相关算法。最终提供了完整的通关代码及测试结果,确保编程任务的成功完成。
66 15
|
8月前
|
移动开发
技术经验分享:008.求最小公倍数
技术经验分享:008.求最小公倍数
57 0
|
9月前
|
人工智能 BI C语言
c语言编程练习题:7-26 最大公约数和最小公倍数
c语言编程练习题:7-26 最大公约数和最小公倍数
54 0
|
算法 Java C语言
【C语言】一篇博客带你弄懂最大公约数和最小公倍数
【C语言】一篇博客带你弄懂最大公约数和最小公倍数
163 0
|
Python
【基础入门题044】最小公倍数
【基础入门题044】最小公倍数
116 0
|
Python
【基础入门题018】求阶乘的和
【基础入门题018】求阶乘的和
84 0
|
Python
【基础入门题045】多个整数的最大公约数
【基础入门题045】多个整数的最大公约数
53 0
|
Python
【基础入门题046】多个整数的最小公倍数
【基础入门题046】多个整数的最小公倍数
75 0
|
Python
【基础入门题026】佩尔数列Pell(n)
【基础入门题026】佩尔数列Pell(n)
137 0