算法_1: 数论_续

素数筛选算法

埃拉托斯特尼算法:将质数的倍数删除;合数n至少有一个小于 n 的质数

  • 算法
    输出:一个集合和1~n内的素数
    流程:

    1. 将S初始化{2,…,n}
    2. 对于2到 n 的每一个 i
      2.1 如果当前iS, 对于j<- i2 j<=n
      2.1.1 将j移除S
      2.1.2 j<-j+i
  • 算法复杂度:O(nlglgn)


最大公约数算法Euclid

  • a=bq+r 则gcd(a,b)=gcd(b,r)
  • gcd(287,91)=gcd(91,14)=gcd(14,7)=7
  • 287=91*3+14; 91=14*6+7; 14=7*2

  • 算法gcd(a,b)

    1. 如果a=0,返回b
    2. 否则,返回gcd (b,a%b)

质因数分解

http://wenku.baidu.com/view/3db5c7a6ad51f01dc381f156.html?re=view
http://www.ituring.com.cn/article/192557
http://book.51cto.com/art/200812/102577.htm

  • 普通质因数分解: O(n)
  • Pollard ryho: O (n0.25) —期望

原理

  • 生日技巧:如果一年中有 N 天(在我们的星球上N=365), 那么每 k= n 个人中有50%的可能性产生生日冲突。
  • 如果q是n的一个大于1的约数且q|(y-x),那么1

策略

  • 在区间[2, N-1] 中随机的选择k个数, x1,x2,...xk
  • 判断是否存在 gcd(xixy,N)>1 ,若存在, gcd(xiyj,N) 是N的一个因子(p或q)
  • 选择 N0.25 个数
  • 生成随机数: f(x)=(x2+a) mod N

是否出现环

  • Floyd:B以A速度的2倍,追赶A,若追上,则存在环

算法

这里写图片描述


欧几里得算法的扩展

  • d=gcd(a,b)=ax+by——-(d, x, y)

原理

  • 如果a=0, (a, b)=b=a*0+1*b

  • 如果 b=aq+r

  • (a,b)=(r,a)=xr+ya=x(baq)+ya=(xq+y)a+(x)b

策略

x=-x’q+y’
y=x’


同余方程

  • 设m 0, 若 m|ab , 称 a 同余b模m,记: ab(mod m)
  • 若m=>1, gcd(a,m)=1; 则存在c 使得 ca1(mod m) . c成为a对模m的逆,记 a1

miller-rabin素数测试

  • 欧拉定理:设gcd(a, m)=1, 则 aφ(m)1(mod m)
  • 费小马定理:对任意 a 和任意质数 p 有 apa(mod p) 当p不可整除a时, 进一步 ap11(mod p)

连分数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值