您的位置:首页 > 其它

刘(白书)之数论:约数、模线性方程

2015-06-02 01:36 225 查看
10.1.1 除法表达式:
  一,通过极端加括号的方式发现除法括号化的规律
  二. 1.知道以上规律后可以采取高精度算法暴力判断
  2.也可以采取唯一分解定律(唯一分解定律也可以用于求解最大公约数和最小公倍数(求公倍数注意lcm=a*b/gcd(a,b)不恰当,因为
  容易溢出,应该先除后乘)
  唯一分解定律的实现方法:指数相加(这里分清楚加起来的指数是指xi中的)
  3.也可以直接约分,关键在于gcd
  gcd采取的是欧几里德算法,复杂度大约5lgN(N=max(a,b))
  (这里加强对于递归的理解:父问题总是有两种解答,一种是边界,另一种由子问题的答案决定
    ,而子问题需要的解答又去问子问题,询问停止于到达边界的子问题,能也只能从这里构建答案)
10.1.2 无平方因子的数
一.其实本质上所谓无平方因子就是把被除数开方以后他是素数,也就转化为了素数筛选
二.素数定理:不超过x的素数和x/lnx相近
三.线性素数筛选法:线性体现在对于素数的倍数数字的筛除,算法复杂度低于nlogn
10.1.3 直线上的点
 一:扩展欧几里德定律:x、y不一定是正数
 二:扩展欧几里德定律解出来的c是gcd,以及相应的x,y
 三:由此可以得到的是gcd倍数的c的x、y的解,如果不是倍数不能得到,由此可以拓展出任意的
 c的基本解,然后根据x、y的通式得到所有解。
 问题:c可以是负数吗?
10.1.4 同余与模运算:
 一.三大同余公式,目的在于把大数的模运算化解为较小的运算,但是要防止中间运算溢出
 公式都是合运算的模等于分运算的模的合运算的模
二:例子:
 1.大整数取模 可以把其写成十进制的括号化模式,然后利用以上公式
 2.模线性方程和逆元:模线性方程可以利用差转化为扩展欧几里得定律,而逆有点像倒数(为什么?)是c=1的方程,在这种
情况下由于c是gcd的倍数,所以gcd只能=1,并且由解唯一(x0c/g,y0c/g用于获取一组解,另一个公式获取通解)
 3.幂取模:
 基本思路依然是利用以上的公式,但是可以优化,采取分治的方法,有点像快速幂,复杂度由n降为logn
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: