[exaqp]数论
未完工,最起码咕半年才能结束
目录
-
算术基本定理
-
整除
-
质数
-
质数,约数判断
-
算术基本定理
-
质因数分解
-
-
最大公约数
-
前置芝士
-
最大公约数
-
互质
-
辗转相除法(求最大公约数)
-
最小公倍数
-
一、算术基本定理
整除
对于整数 , , ,则存在唯一的整数 , ,满足 ,其中 ,则整数除法记为
其中称 为商、 为余数。
当余数 时 ,称 整除 ,记做 ,否则记作 。
若 整除 ,称 是 的约数(因数), 是 的倍数。
一个数总能被 和它本身整除。
质数
对于一个正整数 ,记函数 为 的约数个数。
例如 。
若 ,则称 为质数(也称素数);
若 ,则称 为合数。
,因此 既不是质数也不是合数;
大于 的正整数至少有两个约数( 和本身),因此不是质数就是合数。
所有质数都是 的约数(所有数乘 都等于 ),但讨论时不考虑。
数论函数都是定义在正整数域上的,所以也不考虑负数。
质数,约数判断
用 的数除 ,如果某个数能整除 ,则 为合数;
反之如果都不能整除 ,则 为质数。
若 是 的约数,则 也是 的约数,且 和 之中必有一个 。
所以只需要枚举 的所有数,判断是不是 的约数即可。
算数基本定理
唯一分解定理
任意大于 的正整数可以分解为若干质数的乘积,且该分解唯一。
其中 均为质数, 且 。
例如 可以唯一分解为 。
约数个数定理
举例:
。
质因数分解
求出正整数 的唯一分解的过程称为质因数分解。
当找到一个质因数 时,将 除以 继续进行质因数分解。
从小到大枚举 ,当 时,说明 为质数,不需要再进行枚举。
相关结论: 的大于 的质因数最多只有一个。
二、最大公约数
前置芝士
约定一个正整数的表示方法:
表示 $ n = 2{c_1}35^{c_3}\cdots c_i = 0 $。
如 。
设
则有
如果对于所有 均满足 ,则有 ,且
最大公约数
若 同时是 和 的约数,则称 是 和 的公约数。
和 的公约数中最大的一个称为最大公约数。
和 的最大公约数记为 ,简记为 。
对于任意正整数 :
设有正整数 $ a b $:
则
举例:
互质
若 (即 ),称 和 互质,记为 。
分别对 和 进行质因数分解,没有相同的质因数。所以 。
若 为质数,则 和任意小于 的正整数均互质。
特殊: 和 互质。
解释:因为 有无数个约数,而 的约数只有一个,就是它本身。0和1的公约数只有 ,所以 。
辗转相除法
设 是 和 的公约数,则 和 均为整数。
假设 ,则有
和 仍为整数,
故 和 也是 的倍数。
即两数相互加减,公因数不变。
举例:
故有
更进一步可知
又因为 ,故又可以重复上式中的过程,直到 ,则此时的 就是最大公约数。
复杂度 。
最小公倍数
对于两个整数 $ a b c a b c a b $ 的公倍数。
和 的公倍数中最小的一个称为最小公倍数。
一般记作 ,也可简记为 。
同余
若两数 , 除以 的余数相等,则称 , 模 同余,记做 。
欧几里得算法
问题:给出 , ,快速求出 。
引理:若 ,则 。
不断运用 ,直到某个数等于 0 。
int gcd(int a,int b)
{
if(b==0) return a;
return gcd(b,a%b);
}
欧拉函数
代表 中与 互质的数的个数,称为欧拉函数。
例如 中,1 , 5 , 7 , 11 这 4 个数与 12 互质,所以 。
快速幂
每次询问给出 , , ,快速求出 ,不预处理,每次询问 。
,只要知道 ,就能快速求出 。
注: 表示向下取整。
int p(int a,int b,int c)
{
if(b==0) return 1;
int ans=p(a,b/2,c);
ans=ans*ans%c;
if(b&1) ans=ans*a%c;
//b&1就等于b%2==1
return ans;
}
int p(int a,int b,int c)
{
int ans=1;
for(;b;b>>=1) //b>>=1等同于b/=2
{
if(b&1) ans=ans*a%c;
a=a*a%c;
}
return ans;
}
其他
任意,对于所有元素。
存在,至少一个元素。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效