码迷,mamicode.com
首页 > 其他好文 > 详细

ACM-数学基础知识1

时间:2020-12-08 12:42:15      阅读:4      评论:0      收藏:0      [点我收藏+]

标签:cursor   get   poi   朴素   targe   数列   ack   表示   com   

详细的知识点关键字可参考https://blog.csdn.net/weixin_43093481/article/details/82229718
一.整除:
1.若a|b <=> -a|b <=> a|-b <=> |a| | |b|
2.若a|b,b|c => a|c
3.若a|b,a|c => a|(bx+cy) 其中x,y为任意整数
4.若a|b => am|bm 其中m为非零整数
5.若a|b,b|a => b=±a <=> |b|=|a|
6.若a|bc,且a与c互质,则a|b
7.若a|b,a|c,且b与c互质,则a|bc
8.若a|b,c为任意整数,则b|ac
9.对任意整数a,b>0,存在唯一的数对q,r,使a=bq+r,其中0≤r<b,这个事实称为带余除法定理,是整除理论的基础
10.若c|a,c|b,则称c是a,b的公因数。若d是a,b的公因数,d≥0,且d可被a,b的任意公因数整除,则d是a,b的最大公因数。若a,b的最大公因数等于1,则称a,b互素,也称互质。
累次利用带余除法可以求出a,b的最大公因数,这种方法常称为辗转相除法。又称欧几里得算法。

二.同余:
(a,b)代表最大公约数,[a,b]代表最小公倍数 m|(a-b) <=> a≡b (mod m) a=pm+r (0<=r<m) b=qm+r (0<=r<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),那么a±c≡b±d(mod m),(可加减性)。 性质5:若a≡b(mod m),c≡d(mod m),那么ac≡bd(mod m)(可乘性)。 证明 :m|(a-b) , m|(c-d) 设 a-b=km c-d=lm (ac-bd)=klm^2+(b+d)m =>m|(ac-bd) 性质6:若a≡b(mod m),那么an≡bn(mod m),(其中n为自然数)。 证明 : m|(a-b) => m|n*(a-b) 性质7:若ac≡bc(mod m),(c,m)=1,那么a≡b(mod m),(记号(c,m)表示c与m的最大公约数)。 证明 : m|c(a-b) d=(m,c)=>m/d|(a-b) => a≡b(mod m/d)=>当 d=1时 即(c,m)=1上面结论成立 性质8:若a≡b(mod m),那么a的n次方和b的n次方也对于m同余 证明 :a^n-b^k=(a-b)(a^(n-1)+a^(n-2)b.....b^(n-1)) +m|(a-b) ==>m|(a^n-b^n) 性质9:若 a≡b(mod m1) a≡b(mod m2).... a≡b(mod mi) 则 a≡b(mod [m1,m2,..mi]) 证明:m1 |(a-b) m2|(a-b) ..mi|(a-b) =>[m1,m2...mi]|(a-b) (因为 a-b里面含了 m集合的所有因子和每个因子的最大个数) .剩余系:

1.剩余类:设m∈N*,将全体整数对m取模。将所有余数为r(0<=r<=m-1)的整数都整合到同一个集合中,记为Sr,则Sr称为模m的剩余类。显然有Sr中任意元素a,b都关于模m同余。
2.完全剩余系:在模m的所有剩余类中任取一数得到的集合称为模m的完全剩余系。
3.简化剩余系:对于一Sr,若Sr中的元素与m互质,则称Sr是与m互质的剩余类。从所有φ(m)个互质剩余类任取一数则构成m的一简化剩余系。
四.组合数:
各种性质推荐参考:https://blog.csdn.net/litble/article/details/75913032
五.素数:
1.素数的唯一分解定理:略。
2.素数筛法:
  (1)朴素算法:O(sqrt(n))枚举因子。
  (2)埃式筛法:对于一个合数n,他一定是小于他的某个素数的倍数。算法为:标记每个素数i的倍数记为非素数,遍历到没被标记的数便为素数。
  (3)线性筛素数:显然埃式筛法不是最优,一个合数可能被多个素因子筛到。线性筛法避免了重复筛一个合数。
      线性筛法的关键思想:让每个合数只被他的最小素因子筛到。
      算法:设prime[]数组储存了当前遍历到i时筛出的小于i的所有素数,对于当前遍历的i,若i为合数,他一定被之前某个合(素)数*他的最小质因子所筛,若i为素数,之前没有i
的最小质因子,显然没有被筛到。
         而对于当前的i,我们要考虑i这个数对后面筛数时的贡献。假设p为i的最小质因子,显然对于i这个数,只有2-p范围内的素数可以作为新合数的最小质因子,直接循环prime
[j],筛出i*prime[j],
终止条件为i%prime[j]==0,此时i的贡献已算完。

         如何证明该算法使每个合数都被筛到了呢?给一个简单的证明:显然对于每一个素数i,遍历1-(i-1)时i不可能被筛到,因此prime数组一定包含所有素数(即证明prime数
组中无合数),而对于每个合数n一定可以写成p*x的形式,p为最小质因子,显然

         p存在于prime数组中,而x<n,则算x的贡献时一定筛出了n,即该算法遍历到n时且n是合数时,他一定被筛到了,因此所有合数都会被筛到。
         由于每个数只被他的最小质因子筛到了,该算法的复杂度为O(n)。
3.欧拉函数:记φ(n)为1-(n-1)中与n互素的数的个数。如φ(8)=4,集合为{1,3,5,7};
性质1:若i为素数,则φ(i)=i-1。
性质2:欧拉函数是积性函数:(m,n)=1,则φ(mn)=φ(m)*φ(n)。
证明:构造一个m×n的矩阵如下:
1        2        3    ...    n
n+1       n+2       n+3 ... 2n
2n+1      2n+2 2n+3 ... 3n
.        .        .    ...     .
 .        .         .    ...     .
 .        .         .    ...     .
(m-1)n+1 (m-1)n+2 (m-1)n+3 ... mn

显然每一行都是n的完全剩余系,又有(kn+i,n)=(i,n),则每一列都是n的一个剩余类,且每一行可以取出含有φ(n)个数的 n的简化剩余系。
若每一列都是m的完全剩余系,那么每一列也可以取出m的简化剩余系,显然与n的所有简化剩余系求交可以得到φ(m)*φ(n)个数,这些数x有:(x,m)=1,(x,n)=1 =>(x,mn)=1,则显然φ(mn)可积。
经过分析,现在只需证明每一列都是m的一个完全剩余系。用反证法:取出第i列的数i,n+i,2n+i......(m-1)n+i,若非完全剩余系则一定存在p,q且p!=q使得pn+i≡qn+i(mod m)=>pn≡qn(mod m)=>m|n(p-q)
又∵(m,n)=1 =>m|(p-q)而0<|p-q|<m,故不成立,因此不存在p,q使得某2个数模m同余,因此每一列都是模m的一个完全剩余系,故φ(mn)可积成立。
性质3:(用来线性求欧拉函数与线性筛素数结合即可)
情况①:若i%p!=0,p为质数,则φ(i*p)=(p-1)*φ(i)
证明:显然有(i,p)=1,由性质2可得。
情况②:若i%p==0,p为质数,则φ(i*p)=p*φ(i)
证明:即p是i的素因子,对于数j满足(j,i*p)=1,只需满足(j,i)=1即可,对于i的简化剩余系S中的任意一数Sk,再取任意一数Sk+t*i,0<=t<p,显然(Sk+t*i,i)=1,这些数一共有p*φ(i)个,故原式成立。
有了性质③,在线性筛素数时,可以顺便把素数和被筛到的合数的φ给求出来。
性质4:p为素数,φ(p^k)=(p-1)*p^(k-1)。
证明:显然不与p^k互质的数为p,2p,3p……p^(k-1)*p,则φ(p^k)=p^k-p^(k-1)化简可得。
性质5:φ(n)=n*(1-1/p1)(1-1/p2)……(1-1/pm),其中pi是n的素因子。如φ(8)=8*(1-1/2)=4。
证明:若n=p1^k1*p2^k2……pm^km,由可积性可得φ(n)=φ(p1^k1)*φ(p2^k2)……φ(pm^km)=(p1-1)p1^(k1-1)*
(p2-1)p2^(k2-1)*……(pm-1)pm^(km-1)=n*(1-1/p1)(1-1/p2)……(1-1/pm),证毕。

性质6:n中与n互质的和为φ(n)/2*n。
证明:这是显然的。∵ (a,n)=1 且a<n那么一定有(n-a,n)=1,且有φ(n)一定为偶数,那么这个式子就显然成立了。
补充:n的约数和为多少?Sum=(1+p1+p1^2+……p1^k1)(1+p2+p2^2+……p2^k2)……(1+pm+pm^2+……pm^km)。等比数列可再次化简。
       证明:最朴素的算法Sum=Σ p1^(0~k1)*p2(0~k2)*……pm(0~km)。每个素因子的系数任意取,显然可以写成以上的乘积形式,两式含义相同。
性质7及其后续知识可跳转:https://www.cnblogs.com/whiteblue/p/13893835.html

ACM-数学基础知识1

标签:cursor   get   poi   朴素   targe   数列   ack   表示   com   

原文地址:https://www.cnblogs.com/whiteblue/p/13893750.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!