当前位置: 首页 > news >正文

Pollard Rho 分解质因数

Miller_Rabin 判断素数

如果有 \(a^{p-1} \equiv 1(\bmod p)\)\(p\) 大概率为质数。但是人们发现有些合数无法被这个式子判掉。

有一个显然成立的式子:

\(x^2 \equiv 1 (\bmod p) \rightarrow x^2-1\equiv 0 \rightarrow (x-1)(x+1) \equiv 0\)

\(p\) 是质数时,\(x\) 必定等于 \(\pm1\) ;但是如果 \(p\) 是合数,可能 \((x-1)\)\((x + 1)\) 刚好就是 \(p\) 的两个因子。

当 p 是偶数并且不为 2 时,\(a^{p-1} - 1= (a^{\frac {p-1}2}-1)(a^{\frac {p-1}2} + 1)\),于是可以追加一则对 \(p\) 是否是素数的判定,就是如果分解出来的两个因式不为零,但是乘积为零,就证明 \(p\) 是合数。如果任何一个因式为零,就不得不认为 \(p\) 是素数。然后如果 \(\frac{p-1}2\) 还是偶数,就继续分解因式,然后用上述方式判定。

实现的时候,是先用 \(p\) 的二进制,快速找到能分解出来的最小的 \(a^{\frac{p-1}k}\) ,然后再一步一步乘上去验证。

多这一个步骤竟然可以大大提升判定准确度!并且只需要 \(2,7,61\) 这几个数字就可以判定 int 内数字,用 \(2, 325, 9375, 28178, 450775, 9780504, 1795265022\) 这些数字就可以 \(100\%\) 准确判定 long long 内的数字。


Pollard Rho分解最大质因数算法

Pollard Rho算法分解一个数n的过程大体上是这样子的:

  1. 找到一个 \(n\) 的因子 \(p\),将 n 分解为 p 与 n/p
  2. 如果p或n/p不为质数,将其带入递归上述过程
  3. 如果其是质数,将其记录并退出

找p的过程是这个样子:

  1. 找到一个数 \(p1\)
  2. 通过某种玄学推导手段找出一个与 \(p1\) 对应的 \(p2\)
  3. 如果 \(\gcd(\mid p1-p2\mid,n)\) 不是 1 或 n 时,此数为所求的 p

玄学推导手段

\(p2 \equiv (p1^2 + c) \bmod n\)

其中c为随机常数。

出现循环了怎么办?换一个随机常数 c 再搞。

判环用 floyd判圈算法 搞定。

模板,例题

Floyd判圈算法

作用:

  1. 判断链表是否有环
  2. 计算环的长度
  3. 寻找环的起点

实现:

快慢指针:定义两个指针,慢指针(slow)每次前进一步,快指针(fast)每次前进两步,这里只要 fast 比 slow 前进的快即可,但前进步长太多代码会变慢,所以采用两倍于 slow 步长。

  1. 若无环,fast先走到终点;若有环,最终 slow 和 fast 相遇,且 fast 恰好比 slow 多走了一圈(每次fast与slow的相对位移为1,走完一圈,fast刚好多走一圈)
  2. 因此循环的结束条件为要么 fast 先跑到终点,要么 fast 追上 slow
  3. 初始化slow=head,fast=head.next,是因为如果fast初始化为head,那循环的第一个条件slow!=fast永远都不成立
    while (slow != fast && fast != null && fast.next != null) {slow = slow.next;fast = fast.next.next;}
http://www.sczhlp.com/news/91298/

相关文章:

  • 雕刻机做外贸都是哪些网站建立网站内容需要做的事
  • 杭州网站维护凡科建设网站图片怎么删除
  • 平安河南建设网站wordpress 视频
  • 手机网站制作代理惠阳网络推广公司
  • 网站建设高端公司万盛网站建设
  • 专门做预售的网站优化营商环境
  • 色彩网站设计师外贸网站建设seo
  • 广告投放网站科技感设计感的展厅
  • 网站提交入口百度现在有哪家建筑公司招人
  • ueditor是做网站的吗网站软件定制开发制作
  • 202205_第五届市赛_Analyze
  • 北京建站模板厂家深圳企业网站哪家好
  • 魔兽做宏网站芜湖的网站建设
  • 南京模板网站建设wordpress取消作者
  • 网站建设 2015年11月长沙芙蓉区网页设计培训
  • 网站优化排名资源我有多个单页网站需要备案吗
  • 国内环保行业网站开发wordpress 网站logo
  • 网站后缀co网页翻译用什么软件
  • 大连住房和建设局网站品牌设计图片
  • 没有注册公司可以建网站吗陕煤化工建设集团网站
  • 7777
  • [豪の学习笔记] 软考中级备考 基础复习#7
  • 经典面试题目:二叉树遍历
  • 域名和网站建站公司链接深圳seo专家
  • 怎么上网站建网站的客户
  • 几何图形生成网站如何给网站增加图标
  • 出口外贸网站建设株洲关键词优化费用
  • 网站微信支付怎么做的网络规划设计师培训
  • 网站开站短视频推广方式有哪些
  • 学做网站的网站文章类网站后台