1、ACM数论知识,我的一些总结,一、数的整除性问题,1.整除2.最大公约数和最小公倍数3.扩展欧几里得,整除,定义:设a,b是两个整数,b 0,如果存在整数k,使得a = b*c成立,则称b整除a,或a能被b整除,记作:b | a。性质:1. a | b a | c = x y , a | xb + yc2. a | b b | c = a | c3. m 0 = ( a | b ma | mb )4. a | b b | a = a = b5. a | b b 0 = |a| |b|,GCD&LCM,gcd(a,b) * lcm(a,b) = a * bInt gcd(int a, int b
2、) return b ? gcd(b,a%b);,SPOJ GCDEX,给出N,求G。1=N 1, 若它仅有平凡约数1和p,则称p是素数,否则p是合数。性质:1. 存在无穷多个素数2. 每个大于1的正整数都至少有一个素因子3. 随着x的增长,(x) x / ln x4. 对于任意正整数n,存在至少n个连续的合数,关于素数的猜想,1. 波特兰猜想对于任意正整数n 1,存在一个素数p,使得n p 2n2. 孪生素数猜想存在无穷多个形如p和p+2的素数对3. 哥德巴赫猜想每个大于2的偶数都可以写成两个素数的和,Eratosthenes筛法,Void prime_table() memset(ispr
3、ime,0x01,sizeof(isprime); nprime=0; for (int i=2;imaxn;i+) if (isprimei) primenprime+=i; for (int j=i*I;jmaxn;j+=i) isprimej=0; ,Miller-Rabin素性测试,费马小定理要测试 N 是否为质数,首先将N-1 分解为 2s*d。在每次测试开始时,先随机选一个 介于1, n-1的整数a,之后如果对所有的r in 0, s-1,若ad mod N 1 且 a2rd mod N -1,则 N 是合数。否则,N 有3/4 的机率为质数。,算数基本定理,定义:每个大于1的正整
4、数n都可以被唯一的分解为素数的积的形式。正整数n的分解式 n = p1a1 * p2a2 * * pkak称为n的标准分解式,其中p1,p2,pk为素数且p1p2pk,a1,a2,ak是正整数。,约数个数定理与约数和定理,约数个数d(n) = (a1+1) * (a2+1) * * (ak+1)约数和f(n) = (1+p1+p12+p1a1) * (1+p2+p22+p2a2) * * (1+pk+pk2+pkak),欧拉函数,欧拉函数是少于或等于正整数n的数中与n互质的正整数的数目(n)=n(1-1/p1)(1-1/p2)(1-1/p3)(1-1/p4).(1-1/pk)筛法求欧拉函数欧拉
5、函数与GCD,SPOJ GCDEX,给出N,求G。1=N=1000000,欧拉函数的一些推论,| = | / = 1 gcd(,) 莫比乌斯反演 | = = | (/),莫比乌斯反演,莫比乌斯反演是应用在偏序集上的容斥原理 = | = | (/) n = 1, n=1 1 r ,n不含平方数因子,r为素因子个数 0, n含有平方数因子 n = 1,=1 0,其他 n 是积性函数,POJ 3090 Visible Lattice Points,给定N,求从原点能看到多少个点(x,y)0=x,y=N,SPOJ 7001 Visible Lattice Points,Consider a N*N*N
6、 lattice. One corner is at (0,0,0) and the opposite one is at (N,N,N). How many lattice points are visible from corner at (0,0,0) ? A point X is visible from point Y iff no other lattice point lies on the segment joining X and Y.,n!的素因子分解,n!的素因子p的幂为n/p + n/p2 + n/p3 + Hermite恒等式:对任x大于0,恒有x+x+1/n+x+2
7、/n+ +x+(n-1)/n=nx,三、同余问题,1.同余2.数论四大定理2.线性同余方程3.高次同余方程,同余,定义:给定一个正整数m,如果二整数,b满足m(-b), 就称整数,b对模m同余,记作 b (mod m)。对模m同余是整数的一个等价关系。性质:1. 反身性 a a (mod m)2. 对称性 若a b(mod m) 则b a (mod m)3. 传递性 若a b (mod m),b c (mod m),则a c (mod m),同余的性质,4. 如果a b (mod m),c d (mod m),那么(1)a c b d (mod m),(2)a * c b * d (mod m
8、)5. 若ac bc (mod m) c!=0 则 a b (mod m/(c,m)6. 如果a b (mod m),那么an bn (mod m)7. 若a b (mod m),n|m,则 a b (mod n)9. 若a b (mod mi) i=1,2.n 则 a b (mod m1,m2,.mn),费马小定理,假如p是质数,且(a,p)=1,那么 a(p-1) 1(mod p)求乘法逆元Pow_mod(x,mod-2),威尔逊定理,当且仅当p为素数时:( p -1 )! -1 ( mod p ),欧拉定理,若n,a为正整数,且n,a互质,(a,n) = 1,则a(n) 1 (mod n
9、)。,中国剩余定理,有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二。问物几何?int CRT(int *r, int *m, int n)int M = 1, d, x = 0, y;for (int i = 0; i n; i+) M *= mi;for (int i = 0; i 2时,关于x, y, z的方程 xn + yn = zn 没有正整数解。最终在1995年被英国数学家安德鲁怀尔斯证明。费马在阅读丢番图(Diophatus)算术拉丁文译本时,曾在第11卷第8命题旁写道:“将一个立方数分成两个立方数之和,或一个四次幂分成两个四次幂之和,或者一般地将一个高于二次的幂分成两个同次幂之和,这是不可能的。关于此,我确信已发现了一种美妙的证法 ,可惜这里空白的地方太小,写不下。”,佩尔方程,x2 dy2 = 1 (d1 & d!=k*k)一定有无穷多组正整数解特解暴力法,连分数法通解Xn=(X0+Y0*sqrt(d)n+(X0-Y0*sqrt(d)n)/2Yn=(X0+Y0*sqrt(d)n-(X0-Y0*sqrt(d)n)/(2*sqrt(d),