数论初步
一个题目 6
• 青蛙王子
http://202.197.224.59/exam/index.php/problem/read/id/1058
– 一只青蛙能跳两种长度a,b,问它能否跳到c处 – 例如a=4,b=6,c=2。它可以右跳6,再左跳4, 就到了2了。 – 问题转化为是否存在整数x,y使x*a+y*b=c; – 所以判断gcd(a,b)能不能整除c就行了。
– 把一个数质因数分解 – 像我上一页那个代码
最大公约数greatest common divisor
• 就是最大的(greatest),公共的(common),约数(divisor); • 假设a,b的最大公约数为g,既gcd(a,b)=g; • 把a,b,g质因数分解,
– – – – – a=p0a0 * p1a1 * p2a2 *……* pkak b=p0b0 * p1b1 * p2b2 *…… * pkbk 要是a没有pi这个质因子,则可以认为ai等于0 如果a能整除b,则a0<=b0,a1<=b1……ak<=bk gcd(a,b) = g = p0min(a0,b0) * p1min(a1,b1) * p2min(a2,b2) *…… * pkmin(ak,bk)
扩展欧几里德定理
• 代码:
void ex_gcd(int a,int b,int &x,int &y,int &g){//用引用来传递x,y,g值,a*x+b*y=g; if(b==0){ g=a;x=1;y=0; return; } ex_gcd(b,a%b,y,x,g);//b*y+(a%b)*x=g; y-=a/b*x; } int main(){ int a,b; scanf("%d %d",&a,&b); int x,y,g; ex_gcd(a,b,x,y,g); printf("x=%d,y=%d,g=%d\n",x,y,g); return 0; }
p -1 i 0 p i - 1
k
ei 1 i
一个题目 2
• 因子和
http://202.197.224.59/exam/index.php/problem/read/id/1172
• 求一个数的所有因数和 • 直接上公式就行了
质因数分解
const int N=100; int p[N],e[N]; int main(){ int n,i,j,k; scanf("%d",&n);//n>1 printf("%d = ",n); k=0; for(i=2;i*i<=n;i++){//i*i大于n的时候 就结束循环 if(n%i==0){//找到了一个n的约数, 一定是素数(为什么?) p[k]=i; e[k]=0; while(n%i==0){ n/=i;//n一直除以i,直到n没 有了i这个约数 e[k]++; } k++; } } if(n>1){//结束循环之后,要是n大 于1,则n是一个素数 p[k]=n; e[k]=1; k++; } for(i=0;i<k;i++){ printf("%d^%d",p[i],e[i]); if(i<k-1) printf(" * "); else printf("\n"); } return 0; }
– 1可以理解为0个素数的乘积(p0);
• a = p0e0 * p1e1 * p2e2 * …… * pkek
– 其中p0<p1<p2<……<pk – 这种表示方法是唯一的。 – a的因子个数为(1+e0)*(1+e1)*……*(1+ek) – a的所有因子和为 (1+p0+p02+p03+……+p0e0)*(1+p1+p12+p13+…… +p1e1)*……*(1+pk+pk2+pk3+……+pkek)*
如何判断一个整数a(>1)是不是素数
• 若2~(a-1)有a的因子,则a不是素数。否则a是素数 int main() { int a,i; scanf("%d",&a); for(i=2;i<a;i++) if(a%i==0){ printf("a不是素数"); //找到了a的一个因子,判断完成了,跳出结束循环。 //此时,i<a; break; } //如果a不是素数,则结束循环的时候i<a; //若结束循环的时候i>=a,则说明a是素数。 if(i>=a) printf("a是素数"); //最坏的情况要循环a-2次,要是a很大,就很慢了。 return 0; }
一个题目 7
• hdu1212 Big Number
/showproblem.php?pid=1212
• 就是求a模b,只是a有很大很大最大有1000 位数,b比较小,b最大是100000 • 怎么解?
快速幂
• 求ab,是不是要把a乘b次呢?这样也行, 只是慢了点 • 例如求a8,先把a乘a一次,得到a2,然后把 a2和a2乘一次,得到a4,然后把a4和a4乘一 下就得到a8了 • 假如要求a10呢?10=8+2,a10=a8*a2 • 把10化为二进制, 10=1010(2),1010(2)=1000(2)+10(2)
快速幂
• 直接上代码 int q_pow(int a,int b){//求ab int ans=1;//ans初始化为1 while(b>0){ if(b&1) ans=ans*a;//如果b是奇数,则把ans乘以a a=a*a;//把a变成a2 b>>=1;//b右移一位,相当于b除以2 } return ans; }
更快的方法
• 若2~(a-1)有a的因子,假如是x。 – 则存在y*x=a; – y也是a的一个因子,且2 <= y <= a-1; – x和y必有一个小于等于根号a(sqrt(a)); • 所以,若a是合数,则在2~sqrt(a)中有a的因子。 int m=sqrt(a+0.5);//加0.5是为了避免浮点数误差 for(i=2;i<=m;i++) if(a%i==0){ printf("a不是素数"); break; } if(i>=a) printf("a是素数"); //最坏的情况要循环sqrt(a)-1次,a在1012以内都能很快的算出来
扩展欧几里德定理
• 假设存在整数x,y使a*x+b*y=gcd(a,b); • 若b等于0,可令x=1,y=0;
• a*x+b*y=gcd(a,b)=gcd(b,a%b)=b*x0+(a%b)*y0
• a%b=a-[a/b]*b;(r=a-k*b); • a*x+b*y=b*x0+(a-[a/b]*b)*y0 =b*x0+a*y0-[a/b]*b*y0 =a*y0+b*(x0-[a/b]*y0) • 既x=y0,y=x0-[a/b]*y0; • 令x'=y0,y'=x0,则x=x',y=y'-[a/b]*x';
/showproblem.php?pid=1108
一些定理和推论
• gcd(a, b) 的性质: – 定理:如果a,b是不全为0的任意整数, 则gcd(a, b)是a与b的线性组合 {ax+by:x,y∈Z}中的最小正元素。 – 推论1:对于任意整数a,b,如果d|a并 且d|b,则d|gcd(a, b)。 – 推论2:对于所有整数a和b以及任意非负 整数n,gcd(an, bn)=n*gcd(a,b)。 – 推论3:对所有正整数n,a和b,如果 n|ab并且gcd(a, n)=1,则n|b。
筛法
• 一个合数可以表示为一个比他小素数的倍 数; • 从最小的素数开始,把这个素数的所有倍 数标记为合数; • 对于下一个没有被标记的数,也是素数, 把这个素数的所有倍数标记为合数;(一 直重复这一步) 2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,1 9,20,21,22,23,24,25,26,27,28,29,30,31,32
筛法
const int N=1000;//判断出N以内的素数 int vis[N]={0}; int main(){ for(int i=2;i*i<N;i++)//从2开始 if(vis[i]==0)//如果没有被标记为1,则i是素数 for(int j=i*i;j<N;j+=i)//从i*i开始(为什么?)把i的倍数j全部标记为1 vis[j]=1; int n; scanf("%d",&n);//n要小于N if(vis[n]==0) printf("n是素数");
else printf("n不是素数");
return 0; }
一个题目 1
• 素数个数
http://202.197.224.59/exam/index.php/problem/read/id/1104
– 求a和b之间有多少个素数 – 判断每一个数是不是素数很慢的 – 用筛法就行了
质因数分解
• 任意一个正整数都可以表示为若干个素数 的乘积。
同余
• 设m≠0,若m∣a-b,即a-b=km,则od m)
• a、b关于模m同余的充要条件是整数a和b 被同一正整数m除时,有相同的余数。
数论初步PPT课件
04 素数与合数
素数的定义与性质
素数的定义
素数是大于1的自然数,且只能被 1和它自身整除的数。
素数的性质
素数是无穷多的,最小的素数是2, 所有偶数(除了2)都不是素数, 任何素数的因数都只有两个。
合数的定义与性质
合数的定义
合数是除了1和它自身以外,还有其 他整数能够整除的整数。
合数的性质
合数一定是大于2的偶数或大于3的奇数, 最小的合数是4,合数的因数除了1和它 自身外,至少还有一个其他的因数。
素数的分布与猜想
素数的分布
素数在自然数中的分布比较稀疏,它们的出现似乎有一定的规律性,但尚未被完全证明。
素数的猜想
哥德巴赫猜想和孪生素数猜想是关于素数的两个著名数学猜想,至今仍未被解决。哥德巴赫猜想是猜想任何一个 大于2的偶数都可以写成两个素数之和;孪生素数猜想是猜想存在无穷多对相邻素数,它们之间的距离不超过一 个给定的常数。
代数数域的构建
代数数域的定义
代数数域是具有某种代数结构的域,通常是由有理数域通 过添加代数数得到的。
代数数域的构建方法
通过添加代数数,可以得到不同的代数数域,如添加二次 方程的根可以得到二次数域,添加更高级的方程的根可以 得到更高级的代数数域。
代数数域的性质
代数数域具有一些重要的性质,如封闭性、完备性等,这 些性质对于研究代数数论和数学其他分支都有重要的意义。
THANKS FOR WATCHING
感谢您的观看
05 代数数论基础
代数数论简介
代数数论的定义
代数数论是数学的一个重要分支,主 要研究代数数域和代数整数环的理论。
代数数论的发展历程
代数数论的基本概念
代数数论涉及到许多基本概念,如代 数数域、代数整数环、素数、分解整 环等。
2、数论初步(整除的概念)
④、非零整数的倍数是无限的。
第一章 整数的整除性
第一部分 整除的概念
3、0是任何非零整数的倍数,1是任何整数的约数。 4、当然约数与真约数
在非零整数 a的约数中, 1与 a叫做a的当然约数, 其余约数叫做 a的真约数。
第一章 整数的整除性
第一部分 整除的概念
5、整除与除尽 有理数范围内
整除 除尽
求证:m+n与m-n中有一个且仅有一个是3的倍数。
第一章 整数的整除性
第一部分 整除的概念
【解决问题】
【例5】已知2761除以某自然数,余数不为零,不完全 商为95,求除数与余数。
第一章 整数的整除性
第一部分 整除的概念
【解决问题】 【例6】有一自然数,用它去除63、91、129得到三个余
数之和为25,求这个 b是a的约数(因数)。
第一章 整数的整除性
第一部分 整除的概念
2、关于整除、约数和倍数的几点注意: ①、整除概念强调的是整数a与b的关系。也就是说a与 b之间具有或不具有整除关系,但不管商的大小; ②、约数与倍数是相互依存的; ③、非零整数的约数(因数)是有限的,0的约数(因数) 是无限的;
除尽 整除
整数范围内
整除 除尽
第一章 整数的整除性
第一部分 整除的概念
【例1】试用列举法写出下列各集合的元素。 A={18的正约数};B={25的正约数}; 【问题】 1、一个数,它的约数的个数问题能确定吗? 2、如何保证所有约数一个不漏的写出来? 【结论】
若N p p ... p 其中p (i 1,2...n) 为质数,
第一章 整数的整除性
第一部分 整除的概念
【解决问题】 【例7】
若ax by 是形为ax by的数中的最小正数,
第一讲数论初步
这个定理也叫做惟一分解定理。它是一个定理而不是公理! 虽然在大多人看来,它是“显然成立”的,但它的确是需要 证明的定理
除法和同余
令a为整数,d为正整数,那么有惟一的整数q和r,其 中0≤r<d,使得a=dq+r
素数判定
枚举法: O(n1/2), 指数级别 改进的枚举法: O(phi(n1/2))=O(n1/2/logn), 仍然是指数级别 概率算法: Miller-Rabin测试 + Lucas-Lehmer测试
对于奇数n, 记n=2r*s+1, 其中s为奇数 随机选a(1<=a<=n-1), n通过测试的条件是
可以用这个定理来定义除法:d叫除数,a叫被除数, q叫商,r叫余数。如果两个数a,b除以一个数c的余数 相等,说a和b关于模c同余,记作a≡b(mod c)
最大公约数和最小公倍数
令a和b是不全为0的两个整数,能使d|a和d|b的最大整数称 为a和b的最大公约数,用gcd(a,b)表示,或者记为(a,b)。
整除关系具有传递性.
素数和合数
如果大于1的正整数p仅有的正因子是1和p, 称 p为素数(prime) 大于1又不是素数的正整数称为合数(compound) 如果n是合数, 则n必有一个小于或等于n1/2的素因
子
算术基本定理
每个正整数都可以惟一地表示成素数的乘积,其中素数因子 从小到大依次出现(这里的“乘积”可以有0个、1个或多个 素因子)。
as≡1(mod n), 或者 存在0<=j<=r-1使得a2^j*s≡-1(mod n) 素数对于所有a通过测试, 合数通过测试的概率不超过1/4 只测试a=2, 3, 5, 7, 则2.5*1013以内唯一一个可以通过所有 测试的数为3215031751
第一讲数论初步学习资料
定理: ab = gcd(a,b) * lcm(a,b)
如果gcd(a,b)=1 ,a,b互质
定理的证明
使用惟一分解定理. 设
a p 1 a 1 p 2 a 2 p n a n ,b p 1 b 1 p 2 b 2 p n b n
容易验证定理成立
求出1— n的全部素数;
法一:Eratosthenes的筛子
2是素数, 删除2*2, 2*3, 2*4, …, 2*50 第一个没被删除的是3, 删除3*3, 3*4, 3*5,…,3*33 第一个没被删除的是5, 删除5*5, 5*6, … 5*20 得到素数p时, 需要删除 p*p, p*(p+1), … p*[n/p], 运算量为 [n/p]-p, 其中p不超过n1/2(想一想, 为什么) 近似公式(Legendre常数B=-1.08366)
方法二: (Euclid算法) 利用公式gcd(a, b)=gcd(b, a mod b), 时间复杂度为
O(logb) 方法三: (二进制算法) 若a=b, gcd(a,b)=a, 否则
A和b均为偶数, gcd(a,b)=2*gcd(a/2,b/2) A为偶数, b为奇数, gcd(a,b)=gcd(a/2,b) 如果a和b均为奇数, gcd(a,b)=gcd(a-b,b) 不需要除法, 适合大整数
素数判定
枚举法: O(n1/2), 指数级别 改进的枚举法: O(phi(n1/2))=O(n1/2/logn), 仍然是指数级别 概率算法: Miller-Rabin测试 + Lucas-Lehmer测试
数论初步
定理的证明
• 使用惟一分解定理. 设 a p 1 a 1 p 2 a 2 p n a n , b p 1 b 1 p 2 b 2 p n b n
• 则有:
ga c ,b ) d p 1 m (a 1 ,i b 1 n )p 2 (m a 2 , ib 2 n ) (p n m a n , ib n n ) (
子,取最小的a个,剩下的两两组合供填充尺寸为 1的集装箱时使用 • 当需要填充a个尺寸为k的集装箱时,选择尺寸为k 的盒子中价值最小的a的,然后把剩下的两两组合 成尺寸为k+1的供下一次选用 • 时间复杂度:O(n)
40
例题:反转
• TOM有9个寄存器a[1]..a[9],支持以下操作
– S i j, a[j]a[i]+1 (i可能等于 j) – P i, 输出a[i]
33
分析
• 第一种相遇: 相向t∙(u+v)=(2k+1)L • 第二种相遇: 同向t∙|u−v|=(2k+1)L • 重复: 在端点相遇 • 第一次同时到达端点时刻为r
– 到达不同端点? – 到达同一端点
• A和B分别运动2k1L和(2k2+1)L
– 下一次到达哪里?
• 不同端点?又同时到达此端点?同时到达另一端点? • t=(2k+1)r
31
分析
• X2必须在分母, 其他都可以在分子 • 最后结果是整数吗?
– 方法一: 把X2分解因数 – 方法二: 每次约掉X2和Xi的最大公约数
• 因数分解是困难的,因此方法二优
32
例题:无限赛跑
• AB总长度为L
– 车一从A出发,速度为u – 车二从B出发,速度为v
• 走到端点立刻返回,无时间损失 • 开车总时间t • u, v, t都是正整数 • 相遇多少次?
数论初步
欧几里得公式gcd(a,b)
• 求a,b的最大公约数用gcd(a,b)表示,或者记为(a,b)。 • • gcd(a,b)= • • • gcd(a,b)= • a gcd(b,a mod b) b gcd(b mod a,a) b=0 b>0 a=0 a>0
求n的最大互质数
• gcd(n-1,n)=1 • gcd(n-p,n)<=p • 一般根据n的奇偶性分析,在[1..n]中找出与n 互质的最大数。
判断n在b进制下是否为回文数
• function palb(n,b:integer):boolean; • var s,m:integer; • begin • s:=0;m:=n; • while n>0 do • begin • s:=s*b+n mod b; • n:=n div b; • end; • exit(s=m); • end;
分析:
• 使用惟一分解定理, 单独考虑各个素因子 • c1 = p1a1*p2*a2*…
• c2 = p1b1*p2*b2*…
• …
• 则c1x*c2y=p1(x*a1+y*b1) *p2(x*a2+y*b2)
• 设 a,b为整数,a≠0. 若有一整数q, 使得 b = aq, 则称 a是b的因数,b为是a的倍数;并 称a整除b, 记为a|b;若a不能整除b,则记为 a b。
整除的基本性质:
• ①若c | b,b | a,则c | a • ②若c | a,d | b,则cd | ab • ③若c | a,c | b,则c |(ka+nb);若c a,c b,则 c (a+b)。 • ④若ma | mb,则a | b • ⑤若a>0,b>0,b | a,则b≤a • ⑥若n∈N*,则(a-b)|(an-bn)。 • 若n为奇数,则(a+b)|(an+bn)。 • 若n为偶数,则(a+b)|(an-bn) • ⑦任意n个连续正整数的乘积必能被n!整除。 • ⑧若a|b, a|c, 则a|(b+c) • ⑨若a|b, 那么对所有整数c, a|bc
数论初步
数论初步※知识要点1、奇偶性奇数±奇数=偶数偶数±偶数=偶数奇数±偶数=奇数偶数±奇数=奇数奇数×奇数=奇数偶数×偶数=偶数奇数×偶数=偶数2、数的整除一般地,如a、b、c为整数,b≠0,a÷b=c ,即整数a除以整数b(b不等于0),除得的商c正好是整数而没有余数(或者说余数是0),我们就说,a能被b整除(或者说b能整除a),记作b|a,否则,称为a不能被b整除,(或b不能整除a)。
如果整数a能被整数b整除,a就叫做b的倍数,b就叫做a的约数。
性质:①如果c|a,c|b,那么c|(a±b);②如果bc|a,则b|a,c|a ;③如果b|a,c|a ,(b,c)=1,则bc|a ;④如果c|b,b|a,则c|a.整除特征:①能被2整除的数的特征:个位数字只能是0,2,4,6,8②能被5整除的数的特征:个位数字只能是0或5③能被3(9)整除的数的特征:各个数位上的数字之和能被3(9)整除④能被4(25)整除的数的特征:末两位数能被4(25)整除⑤能被8(125)整除的数的特征:末三位数能被8(125)整除⑥能被11整除的数的特征:这个整数奇数位上的数字之和与偶数位上的数字之和的差(大数减小数)是11的倍数。
3、质数与合数①一个数除了1和它本身,不再有别的因数,这个数叫做质数(也叫做素数)。
一个数除了1和它本身,还有别的因数,这个数叫做合数。
1既不是质数也不是合数。
②如果一个质数是某个数的因数,那么就说这个质数是这个数的质因数。
把一个合数用质因数相乘的形式表示出来,叫做分解质因数。
〘经典例题〙1桌上有11只杯子,全部口朝上,每次将其中8只同时翻转。
问:经过若干次后,能否使11只水杯杯口都朝下?〖举一反三〗11、桌上有9只杯子,全部口朝上,每次将其中6只同时翻转。
问:经过若干次这样的翻转,能否使9只杯子全部口朝下?2、体育课上,有15位学生面向老师站成一排,听到口令后只能有4个向后转。
第1讲 数论初步(生)
中预数学竞赛辅导 第1讲 数 论 初 步一、赛点归纳研究整数性质的数学分支叫数论,它是数学竞赛中的一项重要内容。
虽然数论问题看似简明,但要解释清楚,并且证明它却是困难的;又因为整数及相关的一些数学知识正是中小学学习的重点,所以,在各类数学竞赛中,数论问题占有相当大的比重。
中小学竞赛中的数论问题,常常涉及整数的整除性、带余除法、奇偶性、质数与合数、约数与倍数、整数的分解与分析等等。
要解答这方面的问题,首先应熟悉关于整数的某些知识,此外还要掌握考试问题的基本方法和技巧,后者自然是更重要的。
本讲主要介绍整数的整除和余数问题。
(一) 整除问题对整数a 和b (b 不为0),如果存在一个整数q ,使q b a ⨯=, 则称a 能被b 整除,记作a b |, 否则就称a 不能被b 整除。
例如:9436⨯=,于是36能被4(或9)整除。
性质1若a c |, b c |, 则)(|nb ma c ±,这里m ,n 是任意整数。
性质2若b a c ∙|,且(c ,b )=1,则a c |。
性质3 若a b |,a c |,且(b ,c )=1,则a bc |。
性质4 a 个连续自然数中必恰有一个数能被a 整除。
整除问题是各类数学竞赛中必考的热点问题,必须掌握好解决整除问题的方法与技巧。
(二) 同余问题如果两个正整数a 与b 被正整数m 除时所得余数相同,即,,r pm b r qm a +=+= 则称a 与b 关于模m 同余,其中p 、q 、r 都是整数,而且m r <≤0。
可见,如果a 与b 关于模m 同余,则)(|b a m -。
性质1两数的和除以m 的余数等于这两个数分别除以m 的余数和。
性质2两数的差除以m 的余数等于这两个数分别除以m 的余数差。
性质3两数的积除以m 的余数等于这两个数分别除以m 的余数积。
在解决同余问题时,常常把同余问题转化为整除问题来处理。
二、解题指导【例1】有0、1、4、7、9五个数,从中选出四个数字组成一个四位数(例如1409),把其中能被3整除的四位数从小到大排列起来,第5个数的末位数字是几?【例2】有这样的整数,它除以8所得到的商与余数相同,求所有这样的整数。
数论初步
数论初步1、六位数2003□□能被99整除,它的最后两位数是。
2、有一个三位数等于它的各位数字和的42倍,这个三位数是。
3、下面这个199位整数:1001001001…1001 被13除,余数是多少?4、一个数的20倍减1能被153整除,这样的自然数中最小的是-----。
5、一个三位自然数正好等于它各数位上的数字和的18倍。
这个三位自然数是----。
6、三个连续自然数的和能被13整除,且三个数中最大的数被9除余4,那么符合条件的最小的三位数是----,----,----。
7、如果20052005…200501能被11整除,那么N的最小值是-------。
8、有一个六位数,前四位是2857,即2857□□,这六位数能被11和13整除,请你算出后两位数。
9、在下面的方框中各填入一个数字,是六位数11□□11能被17和19整除,那么方框中的两位数是------。
10、将1996加一个整数,使和能被23与19整除,加的整数要尽可能的小,那么所加的整数是------。
11、用数字6,7,8各两个,组成一个六位数,使它们能被168整除。
这个六位数是-----。
12、在算式□+91=○中,已知□盖住的是一个能被9整除的两位数,○盖住的是7的倍数。
问:○盖住的数是多少?13、若四位数9A8A能被15整除,则A代表的数字是--------。
14、如果有一个九位数A19 993 11B能被72整除,试求A、B 两数的差。
(大减小)15、设A、B使得六位数A2000B能被26整除。
所有这样的6位数是-------。
16、一个十位数,如果各位上的数字都不相同,那么就称为“十全数”,例如,3 785 942 160就是一个十全数。
现已知一个十全数能被1,2,3,…,18整除,并且它的前四位数是4876,那么这个十全数是------。
17、包含0,1,2,3,4,5,6,7,8,9十个数字的十位数称为“十全数”,如果某个“十全数”同时满足下列要求:(1)它能分别被1,2,3,4,5,6,7,8,9,10,11,12整除。
数论初步——精选推荐
数论初步前置知识1.唯⼀分解定理也称算术基本定理,任何⼀个⼤于 1 的⾃然数,都可以唯⼀分解成有限个质数的乘积。
即质因数分解。
2.同余:定义:设 m 是给定的⼀个正整数,a,b 是整数,若满⾜ m∣(a−b) ,则称 a 与 b 对模 m 同余,记为 a≡b(mod m)。
这个式⼦称为 模 m 的同余式。
同余概念⼜常表达为:1.a=b+km,(k∈Z)2.a 与b 被 m 除时有相同的余数。
性质同余式可以逐项相加:若a1≡b1(mod m),a2≡b2(mod m),a2≡b2(mod m),…,a n≡b n(mod m),则a1+a2+⋯+a n≡(b1+b2+⋯+b n)(mod m)同余式可以移项,需要反号。
若a+c≡b(mod m),则a≡b−c(mod m)同余式可以逐项相乘,类似相加。
同余式每⼀边边可以加上或减去模m的任意倍数。
若 a≡b(mod m) ,则a±km≡b(mod m)同余式两边的数如有公约数,此公约数⼜和模互素,那么就可以把两边的数除以这个公约数。
若 a≡b(mod m) 且a=a1d,b=b1d,gcd(m,d)=1, 则a1≡b1(mod m)同余式两边的数和模可以同时乘上⼀个整数。
若 a≡b(mod m) ,则 ak≡bk(mod mk)同余式两边的数和模可以同时被它们任⼀公约数除。
若 a≡b(mod m) 且a=a1d,b=b1d,m=m1d,则a1≡b1(mod m1)如果同余式对于模m成⽴,那么它对于m的任意约数相等的模d也成⽴。
若 a≡b(mod m) 且m=m1d ,则a≡b(mod d)如果同余式⼀边上的数和模能被某个数除尽,则同余式的另⼀边的数也能被这个数除尽。
若 a≡b(mod m),a∣k,m∣k, 则,b∣k。
同余式⼀边上的数与模的最⼤公约数,等于另⼀边上的数与模的最⼤公约数。
若 a≡b(mod m),则(a,m)=(b,m)1.求正整数N的所有约数和若正整数 N 在唯⼀分解定理中:N=p k11⋅p k22⋅p k33...⋅p k m m则有约数和:sum=m∏i=1(k i ∑j=1p j i)2.求正整数N的约数个数:若正整数 N 在唯⼀分解定理中:N=p k11⋅p k22⋅p k33...⋅p k m m 则其约数个数sum=m∏i=1(k i+1)3.求出正整数的所有约数void func(int n)//n为要求的数{for(int i=1;i<=n/i;i++){if(n%i==0){var[++tot]=i;//⽤var来存储因数if(i!=n/i) var[++tot]=n/i;//因数是成对的、但√(n)两个因数⼀样 }}sort(var+1,var+1+tot);//让因数顺序从⼩到⼤}4.欧拉函数欧拉函数ϕ(x)是指 1−n 中与n 互质的数的个数若在唯⼀分解定理中,N=p k11⋅p k22⋅p k33...⋅p k m m,则ϕ(N)=N(1−1p1)(1−1p2) (1)1pm),(1)容斥原理求法:1.从 1−N 中去掉 p1,p2,......p k 的所有倍数N−Np1−Np2−Np3−...Np k2.加上所有 p i⋅p j 的倍数+Np1p2+Np2p3+...3.减去所有 p i⋅p j⋅p k 的倍数−Np1p2p3−Np2p3p4−...4.加上所有 p i⋅p j⋅p k⋅p l+Np1p2p3p4+...以此类推......最后得到的式⼦,恒等变形之后与(1)式相同。
