辗转相除法的理论基础:欧几里德算法。
定理:gcd(a,b) = gcd(b,a mod b) 前提:a > b
证明:
a可以表示成 a = kb + r,则r = a % b
假设d是a,b的一个公约数,则有
a % d =0, b % d = 0,而r = a - kb,因此 r % d = (a - kb) % d = 0
因此d是(b, a % b)的公约数,
假设d是a,b的一个公约数,则有
a % d =0, b % d = 0,而r = a - kb,因此 r % d = (a - kb) % d = 0
因此d是(b, a % b)的公约数,
即a 和 b的公约数也是a对b求模的结果的公约数
假设d 是(b,a % b)的公约数,则
b % d = 0, r % d = 0,但是a = kb +r
因此 a % d = (kb +r ) % d = 0
假设d 是(b,a % b)的公约数,则
b % d = 0, r % d = 0,但是a = kb +r
因此 a % d = (kb +r ) % d = 0
因此d也是(a,b)的公约数