@[toc]目录
1 绪论
1.1 什么是算法
两个整数最大公约数
求m,nm,nm,n的最大公约数记为 gcd(m,n)gcd(m,n)gcd(m,n),其中m,n≥0m,n \geq 0m,n≥0但 不同时为0。
-
利用欧几里得算法计算即gcd(m,n)=gcd(n,m mod n)gcd(m,n) = gcd(n,m \, mod \, n)gcd(m,n)=gcd(n,mmodn),gcd(m,0)=m,m≠0gcd(m,0) = m,m \neq 0gcd(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,nm,nm,n所有质因数
- 求出所有公因数,若一个质因数ppp 在m,nm,nm,n中分别出现pm,pnp_m,p_npm