python 辗转相除法 最大公约数
对于辗转相除法的证明:https://blog.csdn.net/er111er/article/details/79251895原作者写得很棒。def gcd(a,b):return a if b==0 else gcd(b,a%b)首先核心在于:a和b的最大公约数等价于b和a对b求余的最大公约数。感性理解,假设存在最大公约数M,那么a是M的倍数,b是M的倍数,那么a和b的线性组合也是M的倍数。
·
对于辗转相除法的证明:https://blog.csdn.net/er111er/article/details/79251895
原作者写得很棒。
def gcd(a,b):
return a if b==0 else gcd(b,a%b)
首先核心在于:a和b的最大公约数等价于b和a对b求余的最大公约数。
感性理解,假设存在最大公约数M,那么a是M的倍数,b是M的倍数,那么a和b的线性组合也是M的倍数。
所以a对b的余数是线性组合的一种,那么也是M的倍数,更重要的是a对b的余数小于a和b(a>b的时候),这样就使得问题可以递归求解。
更多推荐
所有评论(0)