唯一分解定理及其应用详解

唯一分解定理介绍及其应用

一、定义

唯一分解定理又称算术基本定理,指:一个大于一的正整数N都可以唯一分解成有限个质数的乘积。 N = P 1 a 1 ⋅ P 2 a 2 ⋅ P 3 a 3 ⋯ P n a n N=P_1^{a_1} \cdot P_2^{a2} \cdot P_3^{a_3} \cdots P_n^{a_n} N=P1a1P2a2P3a3Pnan。这里 P 1 < P 2 < P 3 < ⋯ < P n P_1<P_2<P_3<\cdots<P_n P1<P2<P3<<Pn均为质数, a i a_i ai均为正整数.这样的式子成为N的标准分解式

二、证明

一个数肯定是由合数和质数构成的,合数又可以分解成质数和合数,最后递归下去就会变成质数的乘积
例如: 12 = 3 ⋅ 4 = 3 ⋅ 2 ⋅ 2 12=3\cdot4=3\cdot2\cdot2 12=34=322,这样就完全分解为质数的乘积了,为了方便以后的应用,我们这里书写成指数的形式更好一些, 12 = 2 2 ⋅ 3 12=2^{2}\cdot3 12=223,这样的标准形式更好一些。
详细可以看具体严谨证明

三、应用

1.求出数n的因子个数(求出n的约数个数)

个数== ( 1 + a 1 ) ⋅ ( 1 + a 2 ) ⋯ ( 1 + a n ) (1+a_1)\cdot(1+a_2)\cdots(1+a_n) (1+a1)(1+a2)(1+an)这里的ai表示N的标准分解式的幂次数

  • 证明由唯一分解定理知道n可以分解为很多质数,那么它的约数必然也可以分解为这些质数中一些的乘积,而分解而来的每个质数都有选和不选两种可能,比如对于12而言, 12 = 2 ⋅ 2 ⋅ 3 = 2 2 ⋅ 3 1 12=2\cdot2\cdot3=2^{2}\cdot3^{1} 12=223=2231,那么它的约数个数就是(2+1)*(1+1)=6,也就是1,2,3,4,6,12;
  • 1 = 2 0 ⋅ 3 0 1=2^{0}\cdot3^{0} 1=2030
  • 2 = 2 1 ⋅ 3 0 2=2^{1}\cdot3^{0} 2=2130
  • 3 = 2 0 ⋅ 3 1 3=2^{0}\cdot3^{1} 3=2031
  • 4 = 2 2 ⋅ 3 0 4=2^{2}\cdot3^{0} 4=2230
  • 6 = 2 1 ⋅ 3 1 6=2^{1}\cdot3^{1} 6=2131
  • 12 = 2 2 ⋅ 3 1 12=2^{2}\cdot3^{1} 12=2231
  • 容易发现上面的2有三种选择,0次方,1次方,2次方。3有两种选择,0次方,1次方,乘到一块就是3*2种选择,每种选择对应一个约数。
    图上很容易看出来一个数的因子一定可以表示成其质因子的乘积形式,所以就有了第二个应用,下面让我们来看一下吧。

2.求所有的因子之和

  • 既然学会了怎么求约数总数,想必也是知道这些数都是怎么表示的吧。
  • 因数之和= ( P 1 0 + P 1 1 + P 1 2 + ⋯ + P 1 a 1 ) ⋅ ( P 2 0 + P 2 1 + P 2 2 + ⋯ + P 2 a 2 ) ⋯ ( P n 0 + P n 1 + P n 2 + ⋯ + P n a n ) (P_1^{0}+P_1^{1}+P_1^{2}+\cdots+P_1^{a1})\cdot(P_2^{0}+P_2^{1}+P_2^{2}+\cdots+P_2^{a_2})\cdots(P_n^{0}+P_n^{1}+P_n^{2}+\cdots+P_n^{an}) (P10+P11+P12++P1a1)(P20+P21+P22++P2a2)(Pn0+Pn1+Pn2++Pnan)
  • 至于证明,把这个表达式展开就是约数之和了。

3.求gcd和lcm

给你两个数如何用唯一分解定理求最小公约数gcd和最大共倍数lcm,假设两个数是a和b则:
a = P 1 a 1 ⋅ P 2 a 2 ⋅ P 3 a 3 ⋯ P n a n a=P_1^{a_1} \cdot P_2^{a_2} \cdot P_3^{a_3} \cdots P_n^{a_n} a=P1a1P2a2P3a3Pnan

b = P 1 b 1 ⋅ P 2 b 2 ⋅ P 3 b 3 ⋯ P n b n b=P_1^{b_1}\cdot P_2^{b_2} \cdot P_3^{b_3} \cdots P_n^{b_n} b=P1b1P2b2P3b3Pnbn
那么
gcd(a,b)= P 1 m i n ( a 1 , b 1 ) ⋅ P 2 m i n ( a 2 , b 2 ) ⋅ P 3 m i n ( a 3 , b 3 ) ⋯ P n m i n ( a n , b n ) P_1^{min(a_1,b_1)}\cdot P_2^{min(a2,b2)}\cdot P_3^{min(a_3,b_3)} \cdots P_n^{min(a_n,b_n)} P1min(a1,b1)P2min(a2,b2)P3min(a3,b3)Pnmin(an,bn)
反之求lcm就是把上面得min全部换成max
例如:
4 = 2 2 ⋅ 3 0 4=2^{2}\cdot3^{0} 4=2230
6==2*3
gcd(4,6)==2min(2,1) * 3min(0,1)==2
lcm(4,6)==2max(2,1) * 3max(0,1)==12

  • 补充
    一个数的标准分解式不会太长,因为1,2,3,5,7,11,13,17,19,23就这几个数乘积就超过1e8了,int范围的内分解的约数最多大概才1500个
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值