一.Stein算法
Stein算法是一种计算两个数最大公约数的算法,是针对欧几里德算法在对大整数进行运算时,需要试商导致增加运算时间的缺陷而提出的改进算法。
1.1 Stein算法
Stein算法是基于欧几里德算法德一些性质改进的,因此在此介绍一些欧几里德算法的一些特殊性质。
- k×gcd(a,b)=gcd(k×a,k×b)
- 若a是偶数,gcd(a,b)=gcd(a/2,b)
- 若b是偶数,gcd(a,b)=gcd(a,b/2)
- 若a>b且a、b都是奇数,gcd(a,b)=gcd(a-b,b)
Stein算法过程
- c=0;
- 如果a=0 ——————> gcd(a,b)=(2^c)×b=b
- 如果a、b都是偶数——> gcd(a,b)=2 × gcd(a/2,b/2),即a=a/2,b=b/2,c