数论_2、最大公因式计算 & 模算法

方法一:将a、b做质数分解,从而得到最大公因式:

gcd(a,b)=p_1^{min(e_1,f_1)}p_2^{min(e_2,f_2)}...p_r^{min(e_r,f_r)}

这种方法无法在多项式时间内完成,所以无法生成一个有效的算法。

方法二,欧几里得算法(辗转相除法):欧几里得算法基于定理 "GCD recursion theorem":

gcd(a,b) = gcd(b,a\enspace mod\enspace b)

算法步骤:

int EUCLID(a,b){
if b==0
    return a
else return EUCLID(b, a mod b)
}

欧几里得算法的执行次数由较小的数决定,为小于它的最大Fibonacci数的阶数。由于Fibonacci数的阶数为Fibonacci值得对数关系,故欧几里得算法得执行次数为最小值得对数O(lg b)。


:若一个集合和定义在该集合上的二元运算满足以下四条性质(封闭性、结合律、单位元,逆元),则称为一个群,若群中所有运算可交换,则称为阿贝尔群(abelian)。

模加群(Z_n,+) 是一个模加群,简洁表示为Z_n,满足有限群和阿贝尔群的性质 (infinite abelian group),幺元是0,a的逆元是-a(或者n-a)。

模乘群(Z_n^*,\cdot ) 是一个模乘群,Z_n^* 只含有与n互质的元素(为了保证每一个元素都含有逆元),幺元为1。因为模乘群中的元素an互质,所以存在 x,y 使 ax+ny=1,元素a的逆元为x

 

子群S'是有限群S的一个非空封闭子集,称为子群。若子群的大小 |S|\neq |S'|,则称为真子群。

  • Lagrange's theorem:子群的大小是母群大小的因子
  • 若 S' 是一个真子群,则 |S'| \leq |S|/2

生成子群:通过群中的一个元素a重复运算生成一个子群,记为 \langle a \rangle

  • 生成元a的阶数记为ord(a)ord(a)等于最小的正整数t使得a^{(t)}=e
  • ord(a)=|\langle a \rangle |
  • 序列a^{(1)},a^{(2)},...ord(a)为周期
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值