再开一个坑 质因数分解
心力憔悴..理论我一点都不懂..只能讲个主要思想..希望大家不要介意..
清流
第一波清流是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一下就好了啦(大雾)..其实这个过程比较类似筛法..可以自行脑补一下..
(我不知道这是什么复杂度的可能还是挺迷的)
(待填坑)