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

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

    (待填坑)

  • 相关阅读:
    java之获取变量的类型
    java中的++和--
    java(三)基础类型之间的转换
    golang数据结构之总结
    golang数据结构之树的三种遍历方式
    golang数据结构之散哈希表(Hash)
    golang数据结构之递归解决迷宫问题
    golang数据结构之利用栈求计算表达式(加减乘除)
    golang数据结构之栈
    golang数据结构之快速排序
  • 原文地址:https://www.cnblogs.com/tmzbot/p/6687123.html
Copyright © 2011-2022 走看看