再开一个坑 质因数分解

心力憔悴..理论我一点都不懂..只能讲个主要思想..希望大家不要介意..

清流

第一波清流是Trial Division..没什么好说的,O(sqrt(n)/lg(n))

为什么是清流呢..因为..= =..它完全不涉及Small Composite Smoothness..和Square Congruence..

万恶之源

西方有一位费马先生很niu(wu)bi(liao)..他搞出来了一个这样的东西..

for N odd composite, exist (x-y)(x+y)=N that x>y+1 and both integer.

好像挺显然的..虽然其实这个式子不太好用..?我们把它拆开来就是初中最熟悉的那个..x²-y²=N..然后你就去找这个x²和y²..?

那么首先先固定了y(或者更好的选择是x),这个x就是可以直接算出来的了..很轻易..

然后配合Trial Division我们就可以做到O(sqrt(n)/lg(n))了..wtf..它原来是O(n)的..?你考虑3*P...简直惊人..无耻老贼..

其实不然..费马老贼好歹也是空白太小写不下的人..他会这么naive么..?(他有可能藏着好算法,逃)

你考虑一下,x²(mod q)只可能表现为一部分值,比如说(wiki上的例子,我比较懒)q=20时只可能是0,1,4,5,9,16.也就是我们iterate over x²-N[to let it be y²]的时候,是否可以稍微经过一些大脑思考..

那么我们可以构建一个小模数表(最好里面都互质而且和要分解的数互质),然后是否可以只用模这些小模数都可行的测试呢..?答案当然是可以的啦..CRT一下就好了啦(大雾)..其实这个过程比较类似筛法..可以自行脑补一下..

(我不知道这是什么复杂度的可能还是挺迷的)

(待填坑)

posted @ 2017-04-09 23:58  zball  阅读(235)  评论(0编辑  收藏  举报