欧几里得算法 取模运算的运算规则 (a + b) % p = (a % p + b % p) % p (a - b) % p = (a % p - b % p) % p (a * b) % p = (a % p * b % p) % p a ^ b % p = ((a % p)^b) % p 又名辗转相除法 代码实现过程 1非递归写法 int gcd ( int a , int b ) { int r = a % b ; while ( r ) { a = b ; b = r ; r = a % b ; } return b ; } 2递归写法 int gcd ( int a , int b ) { return b ? gcd ( b , a % b ) : a; } 最小公倍数lcm(a,b)=a b/gcd(a,b) 最大公约数和最小公倍数的一些性质 gcd(a , b) = gcd(b , a-b) gcd(ma , mb) = m gcd(a , b), m为一个自然数 gcd(a+mb , b) = gcd(a , b) m=gcd(a , b) 则gcd(a/m,b/m)=gcd(a,b)/m gcd(a, lcm(b, c)) = lcm(gcd(a, b), gcd(a, c)) lcm(a, gcd(b, c)) = gcd(lcm(a, b), lcm(a,