zoukankan      html  css  js  c++  java
  • 再开一个坑 质因数分解

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

    清流

    第一波清流是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一下就好了啦(大雾)..其实这个过程比较类似筛法..可以自行脑补一下..

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

    (待填坑)

  • 相关阅读:
    Boost Log : Log record formatting
    Boost Log : Attributes
    PLSA的EM推导
    特征处理:一点经验
    海量推荐系统:mapreduce的方法
    操作系统之存储器管理
    maredit测试
    算法:链表
    c++特别要点:多态性与虚函数
    sizeof的用法与字节对齐
  • 原文地址:https://www.cnblogs.com/tmzbot/p/6687123.html
Copyright © 2011-2022 走看看