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

2019-04-14 21:30发布

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