一篇不大正经的关于数论的总结(未完
顶函数(\(\lceil {x} \rceil\))、底函数(\(\lfloor {x} \rfloor\)):
常称之为高斯(取整)函数。
定义:
顶函数:\(\geq {x}\)的最小整数。
底函数:\(\leq {x}\)的最大整数。
举个例子:
\(1.\lceil {1.5} \rceil=2\)
\(2.\lfloor {1.5} \rfloor=1\)
\(3.\lceil {-1.5} \rceil=-1\)
\(4.\lfloor {-1.5} \rfloor =-2\)
带余除法:
定义:
\(对于任意整数a,b(a\geq b,b\neq 0),\)\(存在q,r,满足a=qb+r(0\leq r \leq |b|),且q,r唯一\)
我们把a叫做被除数,b叫做除数,q叫做商,r叫做余数。
可以证明\(q=\lfloor \left (\frac {a}{b}\right )\rfloor,r=a-b\lfloor \left(\frac {a}{b} \right)\rfloor\)(证明如下)
\(\because这个是很显然的\)
\(\therefore q=\lfloor \left (\frac {a}{b}\right )\rfloor,r=a-b\lfloor \left(\frac {a}{b} \right)\rfloor\)
整除:
定义:如果\(a\)能把\(b\)除尽,余数为0,那么就说是\(b\)被\(a\)整除,即\(a|b\)。
整除的性质:
- 自反性:对于任意\(n\),有\(n|n\)。
- 传递性:若\(a|b,b|c\),那么\(a|c\)。
- 反对称性:若\(a|b,b|a\),即\(a=b\)。(对称性:若\(a\)满足\(b\cdots\)关系,那么\(b\)也满足\(a\cdots\)关系)
若\(b|a,c|b\),则\(c|a\)。(证明如下)
\(\because b|a,c|b\)
\(\therefore(所以必然存在两个整数x,y)使得a=xb\),\(b=yc\)
\(又\therefore a=xyc\)
\(\because a/c=xy\)
\(\therefore c|a\)若\(c|a,c|b\),则对任意数\(x,y\),必有\(c |(ax+by)。\)(证明如下)
\(\because c|a,c|b\)
\(\therefore (所以必然存在两个整数p,q)使得a=pc\),\(b=qc\)
\(又\therefore c |(pcx+qcy)\)
\(c|c(px+qy)\)
\(\because 两边都有c\)
\(\therefore c(px+qy)是c的倍数\)
\(又\therefore c|(ax+by)\)若\(b|a,a\neq 0\),则有\(|b| \leq |a|\)。(证明如下)
\(\because b|a\)
\(\therefore (所以必然存在一个整数q)使得a=qb\)
\(又\therefore a是b的倍数,|b| \leq |a|\)。若\(b|a,a\neq 0\),则\(\left( \frac ab \right)|a\)。(证明如下)
\(\because b|a\)
\(\therefore (所以必然存在一个整数q)使得a=qb\)
\(又\therefore \left( \frac {a}{b} \right)=\left( \frac {qb}{b} \right)=q\)
\(\because a是q的倍数\)
\(\therefore q|a\)
\(又\therefore \left(\frac{a}{b}\right)|a\)若\(b|a,c|a,b\bot c\),则\(bc|a\)。(举例如下)
\(1.当a=12,b=1,c=6时,1|12,6|12,1\bot12,6|12。\)
\(2.当a=72,b=8,c=9时,8|72,9|72,8\bot9,72|72。(自反性:72|72)\)- 若\(a|b,b|a\),则\(|a|=|b|\)。(反对称性)
若\(a|b\),对任意整数\(c\),则\(a|bc\)。(证明如下)
\(\because a|b\)
\(\therefore b=xa,b是a的倍数\)
\(又\therefore乘上任意整数c,bc依旧是a的倍数\)
\(又\therefore a|bc\)若\(a|b\),对于任意整数\(m(m\neq0)\),则\(ma|mb\)。(证明如下)
\(\because 这是显然的\)
\(\therefore ma|mb\)唯一分解定理(算术基本定理):
\(n=p_1^{r_1}*p_2^{r_2}*\cdots\)
其中\(p_i\)是质数,\(p_1=2,p_2=3 \cdots\)以此类推结论:
设\(p\)为质数,对于任意整数\(a\),则有\(p|a\)或者\((p,a)=1\)。(证明如下)
\(\because p为质数\)
$\therefore a要么是p的倍数,要么p\perp a。 $
\(又\therefore p|a或者(p,a)=1\)约数和倍数:
推论:
在算术基本定理中,若\(N\)被唯一分解为\(N=p_1^{c_1}p_2^{c_2}\cdots p_m^{c_m}\),其中\(c_i\)是正整数,\(p_i\)是质数且满足\(p_1<p_2<\cdots p_m\),则\(N\)的正整数集合可写作\(:\)
{\(p_1^{b_1}p_2^{b_2}\cdots p_m^{b_m}\)},其中\(0\leq b_i \leq c_i\)
N的正约数个数为\(:\)
\[(c_1+1)*(c_2+1)*\cdots*(c_m+1)=\prod_{i=1}^{m}(c_i+1)\]
\(N\)的所有正约数之和为\(:\)
\[(1+p_1+p_1^2+\cdots+p_1^{c_1})*\cdots*(1+p_m+p_m^2+\cdots+p_m^{c_m})=\prod_{i=1}^{m}(\sum_{j=0}^{c_i}(p_i)^{j})\]定义:
若\(a|b,a\)是\(b\)的约数,\(b\)是\(a\)的倍数,称\(a\)为\(b\)的因子(对于任何数\(n\),至少有两个因子\(1\)和\(n\)本身,称它们为\(n\)的平凡因子,其他即为非平凡因子)。特别的,任何正整数都是\(0\)的约数。
约数的求法:
1.试除法:
因为约数总是成对出现,所以只需要从\(1\) ~\(\sqrt{n}\)。时间复杂度\(:O(\sqrt{n})\)
#include"bits/stdc++.h"
#include<time.h>
using namespace std;#define N 10086int a[N];int n;int cnt=0;int main(void) {ios::sync_with_stdio(false);cin>>n;//clock_t start = clock();for(int i=1; i<=sqrt(n); ++i) {if(n%i==0) {a[++cnt]=i;if(n/i!=i) a[++cnt]=n/i;}}for(int i=1; i<=cnt; ++i) cout<<a[i]<<" ";//clock_t ends = clock();//cout<<"\n Running time: "<<(double)(ends - start)/ CLOCKS_PER_SEC;return 0;
}
如果更改题意,给出\(l,r\),要求求\(l-r\)之间的每个数的正约数集合。那么再用试除法,时间复杂度就为\(O(N\sqrt{N})\),变得有点恶心,特别是在\(N\)非常大的时候。譬如跑\(1-100000\)。
消耗的时间如下:
运行代码如下:
#include"bits/stdc++.h"
#include<time.h>
using namespace std;#define N 10086int a[N];int n;int cnt=0;int l,r;int main(void) {ios::sync_with_stdio(false);cin>>l>>r;clock_t start = clock();for(int j=l; j<=r; ++j) {memset(a,0,sizeof(a));cnt=0;
// cin>>n;for(int i=1; i<=sqrt(j); ++i) {if(j%i==0) {a[++cnt]=i;if(j/i!=i) a[++cnt]=j/i;}}for(int i=1; i<=cnt; ++i) cout<<a[i]<<" ";cout<<"\n";}clock_t ends = clock();cout<<"\n Running time: "<<(double)(ends - start)/ CLOCKS_PER_SEC;return 0;
}
这个时候就要用到另一种方法。即:
2.倍数法:
对于任意数\(x\),\(1-N\)中以\(x\)为约数的数就是\(x,2x,3x\cdots \lfloor N/x \rfloor*x\)。时间复杂度为\(O(N \lg N)\)
消耗时间如下:
代码如下:
#include"bits/stdc++.h"
#include<time.h>
using namespace std;#define N 100860vector<int> a[N];int n;int main(void) {ios::sync_with_stdio(false);cin>>n;clock_t start = clock();for(int i=1; i<=n; ++i)for(int j=1; j<=n/i; ++j)a[i*j].push_back(i);for(int i=1; i<=n; ++i) {for(int j=0; j<a[i].size(); ++j) {cout<<a[i][j]<<" ";}cout<<"\n";}clock_t ends = clock();cout<<"\n Running time: "<<(double)(ends - start)/ CLOCKS_PER_SEC;return 0;
}
GCD和LCM:
定义:
1.设\(a\)和\(b\)是两个整数,如果\(d|a\)且\(d|b\),则称\(d\)是\(a\)与\(b\)的公因子。
2.设\(a\)和\(b\)是两个不全为\(0\)的整数,能使\(d|a\)和\(d|b\)成立的最大整数\(d\),称它为\(a\)与\(b\)的最大公因子,或最大公约数,即\(gcd(a,b)\)。
3.设\(a\)和\(b\)是两个不全为\(0\)的整数,能使\(a|d\)和\(b|d\)成立的最小整数\(d\),称它为\(a\)与\(b\)的最小公因子,即\(lcm(a,b)\)。
例题:
如果我们把\(A\)分解成了\(2^{a_1}3^{a_2}5^{a_3}\cdots\),把\(B\)分解成了\(2^{b_1}3^{b_2}5^{b_3}\cdots\)如何快速求\(gcd(A,B)\)。(解如下)
\(\because 假设d=gcd(A,B)\)
\(\therefore d|A,d|B,d最大\)
\(d=2^{p_1}3^{p_2}5^{p_3}\cdots\)
\(\therefore p_1 \leq a_1,p_1 \leq b_1\)
\(p_2 \leq a_2,p_2 \leq b_2\)
\(\cdots\)
\(p_1=min(a_1,b_1),p_2=min(a_2,b_2),\cdots\)
\(又\therefore d=2^{min(a_1,b_1)}3^{min(a_2,b_2)}\cdots\)
2.如何快速求\(lcm(A,B)\)。(解如下)
\(把min换成max即可\)
\(\because 设c=lcm(A,B)\)
\(\therefore c=2^{max(a_1,b_1)}3^{max(a_2,b_2)}\cdots\)
\(gcd(A,B)*lcm(A,B)=A*B=c*d\)
欧几里得算法:
即辗转相除法。时间复杂度为\(O(\lg n)\)。
求\(gcd\)(给出\(a,b\)):
\(引理:若a>b,则gcd(a,b)=gcd(a-b,b)\)
\(证:1.显然a-b,b的公因数也是a,b的公因数。\)
\(2.a,b的公因数也肯定是a-b,b的公因数。\)
\(3.a,b的公因数集合与a,b的一模一样,最大的当然也一样。(更相减损术)\)
\(所以解得gcd(a,b)=gcd(a, a\bmod b)=gcd(a\bmod b,b)\) \(↰\)
\(↑\)
再证明一下上面的式子?\(↑\)
\(设c(a,b)表示a,b的所有公因数的集合,则gcd(a,b)是r(a,b)中最大的。\)
\(先尝试证明:a>b时,gcd(a,b)=gcd(a,a-b)(过程在上面)\)
\(要证这个,只需证r(a,b)=r(a,a-b)\)
\(假设d是a,b的公因数\)
\((那么必然存在两个整数p,q)使得a=pd,b=qd→d(p-q)=a-b\)
\(a,b的公因数肯定是a,a-b的公因数,反之成立\)
\(gcd(a,b)=gcd(a,a\bmod b)(一直减一个数,余下的便是a\bmod b的余数)\)
\(举例:\)
\(a=20,b=3\)
\(即gcd(20,3)→(17,3)→(14,3)→(11,3)→(8,3)→(5,3)→(2,3)\)
Code:
inline int gcd(int a,int b){if(b==0) return a;return gcd(b,a%b);//return b==0 ? a : gcd(b,a%b);
}
一条性质:
记\(f[n]\)为斐波那契数列的第\(n\)项,则有\(gcd(f[a],f[b])=f(gcd[a,b])\)。
计算\(lcm\):
\(lcm=a/gcd(a,b)*b\)
错误做法:
\(lcm=a*b/gcd(a,b)\)(会爆int)
互质:
若\(gcd(a,b)=1\),那么\(a\perp b\)。
基本定理:
1.对于任意两个质数\(n,m\),\(n\perp m\)。
2.对于任意两个相邻的整数\(n,m\),\(n\perp m\)。
3.若\(a=1\),对于任意一个自然数\(m\),\(a\perp m\)。
4.一个质数\(m\),一个合数\(n\),若\(n\)不是\(m\)的倍数,\(n\perp m\)。
同余:
定义:
若两个整数\(a,b\),且它们的差\(a-b\)能够被某个自然数\(m\)所整除,则称\(a\)与\(b\)对模\(m\)同余。记作\(a\equiv b(\bmod m)\),若\(m\)的值可以由上下文推出时,简写为\(a\equiv b\)。
性质:
1.自反性:\(a\equiv a\)。
2.对称性:若\(a\equiv b\),则%b\equiv a%。
3.传递性:若\(a\equiv b,b\equiv c\),则\(a\equiv c\)。
4.同加性:若\(a\equiv b\),则\(a+c\equiv b+c\)。
5.同乘性:(1)若\(a\equiv b\),则\(a*c\equiv b*c\)。
(2)若\(a\equiv b,c\equiv d\),则\(a*c\equiv b*d\)。
6.同幂性:若\(a\equiv b\),则\(a^n\equiv b^n\)。
7.同余式相加:若\(a\equiv b,c\equiv d\),则\(a\pm c\equiv b\pm d\)。
8.同余式相乘:若\(a\equiv b,c\equiv d\),则\(ac\equiv bd\)。
以上性质都是很显然的。
容斥原理:
基本思想:
在计算的时候,总是会有遗漏或者是重复计算的部分,为了使重复计算的部分不被重复计算,可以先算出所有可能,然后再把重复计算的部分减去。
举例:
假设某虎有\(A\)个妹子,cgp有\(B\)个妹子,他们想要知道他们一共有多少个不同的妹子(每个人都有很多,总会有相同妹子)。
先用两个圆圈表示出每个人所拥有的妹子。
then。
那么红色的部分代表的是两个人都有的妹子。
如何计算他们俩一共有多少种不同的妹子?
就需要先把他俩所拥有的妹子加起来,然后再减去红色的部分都有的妹子,就是所求。
则\(A\cup B=A+B-A\cap B\)。
那么再假设某虎依旧有\(A\)个妹子,cgp依旧也有\(B\)个妹子,突然sjp来了,sjp也有妹子,sjp突然也对这产生兴趣,于是某虎有\(A\)个妹子,cgp有\(B\)个妹子,sjp有\(C\)个妹子,他们想要知道他们一共有多少种不同的妹子(每个人都有很多,总会有相同妹子)。
那么我们先用三个圆圈表示出每个人所拥有的妹子。
then。
那么蓝色的部分代表的是三个人都有的妹子,绿色的部分代表的是某虎和cgp都有的妹子,橙色的部分代表的是cgp和sjp都有的妹子,紫色部分代表的是某虎和sjp都有的妹子。
那么如何计算他们仨一共有多少种不同的妹子?
就需要先把他们仨所拥有的妹子都加起来,然后再减去绿色的,紫色的,橙色的部分相同的妹子,最后再加上蓝色的部分的妹子,就是所求。
则\(A\cup B\cup C=A+B+C-A\cap B-A\cap C-B\cap C+A\cap B\cap C\)。
转载于:https://www.cnblogs.com/morbidity/p/10871967.html
一篇不大正经的关于数论的总结(未完相关推荐
- 各种友(e)善(xin)数论总集(未完待续),从入门到绝望
目录 快速幂 扩展欧几里得 GCD 扩展欧几里得 同余系列 同余方程 同余方程组 一点想法 高次同余方程 BSGS exBSGS 线性筛素数 埃式筛 欧拉筛 欧拉函数 讲解 两道水题 法雷级数 可见点 ...
- 【秋招纪实录】一篇特别正经的【百度】求职经验分享
本篇推文共计2000个字,阅读时间约3分钟. 01 求职关键词 百度 商业产品经理岗位 2020年秋季校园招聘 已取得offer 02 笔试 岗位的笔试时间一共2小时左右. 有一小时时间用于大题作答, ...
- 【秋招纪实录】一篇特别正经的【紫光展锐】求职经验分享
本篇推文共计2000个字,阅读时间约3分钟. 01 求职关键词 紫光展锐 软件开发岗 2020年秋季校园招聘 已取得offer 02 笔试 紫光展锐的笔试不是特别难,相比较难度较为容易,大部分选择题都 ...
- 【秋招纪实录】一篇特别正经的【基恩士】求职经验分享
本篇推文共计2000个字,阅读时间约3分钟. 01 求职关键词 基恩士 销售工程师岗 2020年秋季校园招聘 已取得offer 02 企业科普 随着工业自动化方面的迅速发展,KEYENCE作为传感器和 ...
- 【秋招纪实录】一篇特别正经的【TCL】求职经验分享
本篇推文共计2000个字,阅读时间约3分钟. 01 求职关键词 TCL 软件测试岗 2020年秋季校园招聘 已取得offer 02 笔试 笔试的难度不算太难,选择题加编程题,题量较少.选择题主要以一些 ...
- 【秋招纪实录】一篇特别正经的【无领导小组讨论】经验分享
本篇推文共计2000个字,阅读时间约3分钟. 无领导小组讨论是指公司面试中,由一组应试者组成一个临时工作小组,讨论给定的问题,并做出决策.由于这个小组是临时拼凑的,并不指定谁是负责人,目的就在于考察应 ...
- 【秋招纪实录】一篇特别正经的【腾讯】求职经验分享
本篇推文共计2000个字,阅读时间约3分钟. 01 求职关键词 腾讯 技术运营类岗位 2020年秋季校园招聘 已取得offer 02 笔试 笔试考的知识很多,但都是选择题.内容包括编程.网络.操作系统 ...
- 【秋招纪实录】一篇特别正经的【深信服】求职经验分享
本篇推文共计2000个字,阅读时间约3分钟. 01 求职关键词 深信服 软件测试岗 2020年秋季校园招聘 已取得offer 02 企业科普 深信服科技股份有限公司是一家专注于企业级安全.云计算及基础 ...
- 【秋招纪实录】一篇特别正经的【建信金科】求职经验分享
本篇推文共计2000个字,阅读时间约3分钟. 01 求职关键词 建信金科 研发技术岗 2020年秋季校园招聘 已取得offer 02 企业科普 建信金融科技是中国建设银行的全资子公司,传承建行三十年的 ...
最新文章
- 【原创】分布式之缓存击穿 【原创】自己动手实现静态资源服务器 【原创】自己动手实现JDK动态代理...
- 一种巧妙的drawable.xml替代方案
- linux下的几种进程间通信方式的特点
- Not so Mobile(二叉树递归输入同时建树){天平}
- 2017西安交大ACM小学期 文本查找[AC自动机]
- leetcode 102 C++AC
- php在线读取pdf文件大小_PDF转WORD在线转换器哪家强?
- Aprior算法简化算法——FP-Tree思想与实现
- qt中tinyxml2的基本使用方法
- html网页主题结构,常用html元素总结包括基本结构、文档类型、头部、主体等等...
- cuda out of memory gpu还有空间_《室内设计》光与空间的无缝衔接
- Mysql 删除数据表的三种方式详解
- 平衡小车从原理到实践
- Mac QuickTime+Soundflower录屏
- memory allocator php,LNMP的安装
- a1708硬盘转接口_macbook pro2017 a1708转接卡更换大容量硬盘,Apple/苹果笔记本电脑_好文分享_优购 - 荐优,购适...
- 用python批量下载网络图片_使用python批量下载图片吗?怎么做?
- 设计模式是什么鬼3(原型)
- mpu和嵌入式linux区别,嵌入式MCU与MPU的区分和MCU开发中的三个误区
- 【图像分割】ExG超绿特征灰度化、二值化分割(Matlab及Python代码实现)
热门文章
- perl linux 独立运行,Perl脚本打包为独立执行程序
- XBMC源代码分析 4:视频播放器(dvdplayer)-解码器(以ffmpeg为例)
- java jhap_Java-Live与JVAP工具的Max
- 12v电源正负极区分_UPS不间断电源的安装、配电计算及相关故障处理方法!
- 【软考】程序设计语言复习指南
- 第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(济南)(热身赛)
- 证券计算机行业研究,20210630-首创证券-计算机行业深度报告:物联网,研究框架.pdf...
- 第八章节 文件操作一 (文件夹常用操作)
- linux 汇编 读取软盘,读取软盘逻辑扇区的汇编实现代码
- hdu 3333 Turing Tree 求区间内不同数的和——线段树解法