标签:
[2016-01-28][数学][][]
判断一个数是否是素数,除了1和它本身之外都没因子
朴素方法:从2开始检查到根号n,
埃氏筛法,从一个2开始到n,,如果一个数是素数,那么从a*a开始去除1-n中a 的所有倍数
线性筛
每个合数都有最小的素因子,让每个合数只被最小的素因子筛掉
从2开始,如果一个数a是素数,将当前元素表中的元素p的a倍标记为合数
遇到第一个被a整除的数后停止
,在这里,ap最小的素因子是p
辗转相除法:求两个数的最大公因数
最大公约数符号表示
int gcd(int a,int b){
return b?gcd(b,a%b):a;
}
(a1,a2,a3,...,an)
最大公约数,区间可加,可以出现在线段树的题目
最大公因数
(a,b)*[a,b] = a*b;
标准素因数分解
反复取最大公约数
正约数的个数
分解质因素后,每个素数次数+1 后连乘
思路,乘法原理,每个素数 对应的取法为 0 ,1,2,...次数
欧拉函数,求1-n,中与n互素的数个个数
乘法原理
费马小定理
如果a为整数,p为质数,那么 a^p== a (mod p)
a^(p-1) = 1 (mod p)
欧拉定理
扩展欧几里得
逆元
组合数(适合1000以内)
n很大而k或者n-k很小的时候,直接计算
当n不是很大而查询很多时,预处理出n个数的阶乘,以及这些阶乘的逆元,
求n的逆元,乘n-1,n-2得到 n-1,n-2的逆元
素数定理
容斥原理
标签:
原文地址:http://www.cnblogs.com/qhy285571052/p/5185324.html