方法一:将a、b做质数分解,从而得到最大公因式:
这种方法无法在多项式时间内完成,所以无法生成一个有效的算法。
方法二,欧几里得算法(辗转相除法):欧几里得算法基于定理 "GCD recursion theorem":
算法步骤:
int EUCLID(a,b){
if b==0
return a
else return EUCLID(b, a mod b)
}
欧几里得算法的执行次数由较小的数决定,为小于它的最大Fibonacci数的阶数。由于Fibonacci数的阶数为Fibonacci值得对数关系,故欧几里得算法得执行次数为最小值得对数O(lg b)。
群:若一个集合和定义在该集合上的二元运算满足以下四条性质(封闭性、结合律、单位元,逆元),则称为一个群,若群中所有运算可交换,则称为阿贝尔群(abelian)。
模加群: 是一个模加群,简洁表示为
,满足有限群和阿贝尔群的性质 (infinite abelian group),幺元是0,a的逆元是-a(或者n-a)。
模乘群: 是一个模乘群,
只含有与n互质的元素(为了保证每一个元素都含有逆元),幺元为1。因为模乘群中的元素
与
互质,所以存在
使
,元素
的逆元为
。
子群:是有限群
的一个非空封闭子集,称为子群。若子群的大小
,则称为真子群。
- Lagrange's theorem:子群的大小是母群大小的因子
- 若
是一个真子群,则
生成子群:通过群中的一个元素重复运算生成一个子群,记为
。
- 生成元
的阶数记为
,
等于最小的正整数
使得
。
- 序列
以
为周期