@[toc]目录
1 绪论
1.1 什么是算法
两个整数最大公约数
求 m , n m,n m,n的最大公约数记为 g c d ( m , n ) gcd(m,n) gcd(m,n),其中 m , n ≥ 0 m,n \geq 0 m,n≥0但 不同时为0。
-
利用欧几里得算法计算即 g c d ( m , n ) = g c d ( n , m   m o d   n ) gcd(m,n) = gcd(n,m \, mod \, n) gcd(m,n)=gcd(n,mmodn), g c d ( m , 0 ) = m , m ≠ 0 gcd(m,0) = m,m \neq 0 gcd(m,0)=m,m̸=0.
def euclid(m,n): if not m and not n: return False if m<n: r = m m = n n = r while n: r = m%n m = n n = r return m
-
利用连续整数检测算法
公约数即能够同时整除两个数的正整数。
def continue_detection(m,n): if not m and not n: return False if not m or not n: return m|n t = min(m,n) while t: if not m%t and not n%t: return t t = t - 1
-
质因数分解
- 分别求得 m , n m,n m,n所有质因数
- 求出所有公因数,若一个质因数 p p p 在 m , n m,n m,n中分别出现 p m