数论浅谈

本文介绍了数论的基本概念,包括欧拉定理、完全分解定理、组合数学中的组合计数,以及卢卡斯定理和辗转相除法。详细证明了欧拉定理,解释了卢卡斯定理的应用,并展示了如何用辗转相除法求最大公因数。此外,还提及了Legendre定理在简化计算上的优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

符号定义

在数论中,有许许多多的符号需要我们知道,比如这些:
ϕ ( p ) \phi(p) ϕ(p),它表示,在比p小且与p互质的个数
(a,b),表示a和b的最大公因数
[a,b],表示a和b的最小公倍数
n!,表示1~n这n个数相乘
鉴于无法使用向下取整,
目前,我们只需要用到这些符号

欧拉定理

定理

a ϕ ( p ) ≡ 1 ( m o d   p ) a^{\phi(p)}\equiv 1\qquad(mod~p) aϕ(p)1(mod p)

证明过程

我们设n= ϕ ( p ) {\phi(p)} ϕ(p),{b|0<b<p且(b,p)=1}
我们容易知道,任意bi不等于bj(i,j<=n),所以 a × b i 不 等 于 a × b j a\times bi 不等于a\times bj a×bia×bj,且(a*bj,p)=1
这时,我们又要引入一个定理
若 ( a , p ) = 1 , 则 ( a   m o d   p , p ) = 1 若(a,p)=1,则(a\ mod~p,p)=1 (a,p)=1,(a mod p,p)=1
这个就留给读者自己证明了
所以我们再创造一个数组c吧,{c| a × b i ( m o d   p ) a\times bi(mod~p) a×bi(mod p),1<=i<=n}
我们就可以知道c数组和b数组错位相等
为什么呢?因为c数组中每个数必定与p互质,而b数组中包含了每个小于p且与p互质的数,所以两个集合必定相等
所以c数组每个数相乘和b数组每个数相乘模p的值应该相等,即:
a ϕ ( p ) × b 1 × b 2 × … … × b n ≡ b 1 × b 2 × … … × b n ( m o d   p ) a^{\phi(p)}\times \\b1\times\\b2\times\\……\times\\bn\equiv b1\times\\b2\times\\……\times\\bn(mod~p) aϕ(p)×b1×b2××bnb1×b2××bn(mod p)
所以
a ϕ ( p ) ≡ 1 ( m o d   p ) a^{\phi(p)}\equiv 1\qquad(mod~p) aϕ(p)1(mod p)
证毕

完全分解定理

完全分解定理十分简单,就是说一个数可以分解为如下形式,即:
a = w 1 a 1 × w 2 a 2 × … … × w p a p a=w_1^{a_1}\times\\w_2^{a_2}\times\\……\times\\w_p^{a_p} a=w1a1×w2a2××wpap
其中,每个w数组中的值都为质数
这个东西显然成立,我就不多说了

组合数学

组合数学,是属于高中数学范围内的知识,他一般的形式就是从n个树中选出m个,问有多少种选法
我们定义两个数学符号,A,C
A表示从n个数中选m个,选出来要排序,问有多少种方法,C表示从n个数中选m个,选出来不排序,问有多少种做法
这个有计算公式, A ( n , m ) = n ! ( n − m ) ! A(n,m)=\frac{n!}{(n-m)!} A(n,m)=(nm)!n!, C ( n , m ) = n ! m ! × ( n − m ) ! C(n,m)=\frac{n!}{m!\times\\(n-m)!} C(n,m)=m!×(nm)!n!
我们以A(n,m)为例,选第一个可以有n个选择,选择第二个可以有(n-1)个选择,如此下去到第m个就有(n-m+1)个选择,把所有可能相乘,即为最终结果,就是:
n × ( n − 1 ) × ( n − 1 ) × … … × ( n − m + 1 ) n\times\\(n-1)\times\\(n-1)\times\\……\times\\(n-m+1) n×(n1)×(n1)××(nm+1)
即:
n ! ( n − m ) ! \frac{n!}{(n-m)!} (nm)!n!
那C(n,m)就只需要把A(n,m)再除以m!,因为选出来要全排,就有m!种情况,所以再一除,就是C(n,m)
至于组合数学的16种经典题以后再说吧。

卢卡斯定理

定理

C ( n , m ) ≡ C ( [ n p ] , [ m p ] ) × C ( n m o d p , m m o d p ) p 为 质 数 C(n,m)\equiv C([\frac{n}{p}],[\frac{m}{p}])\times\\C(n\qquad mod\qquad p,m\qquad mod\qquad p) \qquad p为质数 C(n,m)C([pn],[pm])×C(nmodp,mmodp)p

证明过程

m = a × p + b m=a\times\\p+b m=a×p+b, n = c × p + d n=c\times\\p+d n=c×p+d
即证, C ( n , m ) ≡ C ( c , a ) × C ( d , b ) C(n,m)\equiv C(c,a)\times\\C(d,b) C(n,m)C(c,a)×C(d,b)
即证, n ! m ! ( n − m ) ! ≡ c ! × d ! a ! × b ! × ( c − a ) ! × ( d − b ) ! ( m o d   p ) \frac{n!}{m!(n-m)!}\equiv\frac{c!\times\\d!}{a!\times\\b!\times\\(c-a)!\times\\(d-b)!}(mod~p) m!(nm)!n!a!×b!×(ca)!×(db)!c!×d!(mod p)
即证, m ! × ( n − m ) ! × c ! × d ! m!\times\\(n-m)!\times\\c!\times\\d! m!×(nm)!×c!×d! ≡ \equiv n ! × a ! × b ! × ( c − a ) ! × ( d − b ) ! n!\times\\a!\times\\b!\times\\(c-a)!\times\\(d-b)! n!×a!×b!×(ca)!×(db)! ( m o d   p ) (mod~p) (mod p)
1、若n、m皆大于等于p,则两边模p的值都为零,显然成立
2、若n大于等于p,则只需证C( c × p + d c\times\\p+d c×p+d,b) ≡ \equiv C ( d , b ) C(d,b) C(d,b)(mod~p),这个显然成立,为什么,只需要将两边表示出来,十字相乘即可,读者可以自己思考
3、若n、m皆小于p,则即证C(b,d) ≡ \equiv C(b,d) ( m o d   p ) (mod~p) (mod p),显然成立,证毕
所以,Lucas定理成立,证毕

辗转相除法求最大公因数

这个东西一开始起始于中国,它的原理十分简单
即,若a|b,a|c,则a|(|b-c))
所以,我们设(b,c)=a
则,a|(max(b,c)-min(b,c))
则a|(b mod c,c),假设b比c大
这样我们就可以用递归来实现
代码如下:

int gcd (int a,int b)
{
	if (a % b == 0) return b;
	else return gcd (b,a % b);
}

Legendre定理

定理

设 n ! = p 1 w 1 × p 2 w 2 × p 3 w 3 × … … × p t w t 设n!=p_1^{w_1}\times\\p2^{w_2}\times\\p3^{w_3}\times\\……\times\\p_t^{w_t} n!=p1w1×p2w2×p3w3××ptwt
其中,p1,p2,……,pt皆为质数
则, w i w_i wi= ∑ j = 1 p i j &lt; = n ⌊ n a j ⌋ \sum_{j=1}^{p_i^{j}&lt;=n}\lfloor \frac{n}{a^{j}}\rfloor j=1pij<=najn

应用好处

这样我们就不用把高精乘,高精除打出来了,而且大大减少了时间复杂度,在之后的一些题中是十分有用的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值