学习笔记第四十四节:简单的数论方法

正题

      来自whzzt的定义,对于我来说,还是太难了。

简单的素数判定方法

      首先是两个简单的素数判定方法:Miller-Rabin,Lucas-prp

      Lucas-prp判定方法在网上很难找到证明,我们在这里只说一下Miller-Rabin素数判定方法。

      它是根据一个东西来判定的:对于一个质数p,必定有a^2\equiv 1\ (\mod p)\ \to a\equiv 1\ \or\ p-1\ (\mod p)

      而根据费马小定理,我们知道a^{p-1}\equiv 1 (\mod p),所以我们找一个任意正整数a,然后求它的p-1次,再不断开方(这个开方相当于是每一次求\frac{p-1}{2}次,\frac{p-1}{4}次......

      然后我们多试几个a,就能大概率地保证p为质数了。

简单的整数分解方法

      我们对于一个大数n,想要对他进行质因数分解是很困难的。

      复杂度就是sqrt(n)然后再加上素数判定的时间。

      当n为long long,就很困难了。

      在Pollard-rho中,我们考虑这样一条函数f(x)=x^2+c,我们让x初始值为1,然后不断调用这一个函数,就是算出f(f(x)),f(f(f(x)))...这些东西的值。那么我们把它对n取膜之后,必定形成一个环或者一个\rho。所以我们设x,y,令x每一次跳一步,y每一次跳两步。

      然后每一次我们把y-x与n求一个gcd,若不为1,那么返回这个因子d,再不断递归d,n/d

      复杂度不会证,而且那条式子不能改,一改复杂度就不对。。。。就是很快

简单的离散对数求解

       首先是BSGS,前面有博客,可以看一下。

       接着就是Pollard-rho on logorithm,没学会留个坑吧,网上也没有中文版的博客,维基上面的我也看不懂啊。

其他的

       杂项就很多了,比如说:Lucas定理了,Hall定理,卡特兰数,斯特林数,中国剩余定理。。。在这里就不再扩展,想学习的自行查阅菜鸡弱弱的博客。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值