算术基本定理及其应用

算术基本定理,又称为正整数的唯一分解定理,即:每个大于1的自然数均可写为质数的积,而且这些素因子按大小排列之后,写法仅有一种方式。例如: 6936=23×3×1721200=24×3×526936=23×3×172,1200=24×3×52

算术基本定理的内容由两部分构成:
1. 分解的存在性:
2. 分解的唯一性,即若不考虑排列的顺序,正整数分解为素数乘积的方式是唯一的。

N=pa11pa22pa33pann=i=1npaiiN=p1a1∗p2a2∗p3a3⋯∗pnan=∏i=1npiai

这里 p1<p2<p3<<pn  p1<p2<p3<⋯<pn 且均为质数,其中指数 ai  ai 是正整数

定理应用


N的正因数个数

一个大于1的正整数N,如果它的标准分解式为N=pa11pa22pa33pannN=p1a1p2a2p3a3⋯pnan
那么N的正因数个数为

σ0(N)=(1+a1)(1+a2)(1+an)σ0(N)=(1+a1)(1+a2)⋯(1+an)

N所以N的正因子个数为:

σ(N)=i=1n(1+ai)σ(N)=∏i=1n(1+ai)

N的全体正因数之和为

σ(N)=(1+p1+p21++pa11)(1+p2+p22++pa22)(1+pn+p2n++pann)σ(N)=(1+p1+p12+⋯+p1a1)(1+p2+p22+⋯+p2a2)⋯(1+pn+pn2+⋯+pnan)

σ(N)=(pa1+111p11)(pa2+121p21)(pa3+131p31)(pan+1n1pn1)σ(N)=(p1a1+1−1p1−1)(p2a2+1−1p2−1)(p3a3+1−1p3−1)⋯(pnan+1−1pn−1)

σ(N)=ni=1pai+1i1pi1σ(N)=∏i=1npiai+1−1pi−1

N所以N的全体正因子之和为:

σ(N)=i=1npai+1i1pi1σ(N)=∏i=1npiai+1−1pi−1

举个例子:
12=2231=pa11pa22(p1=2a1=2p2=3a2=1)12=22∗31=p1a1∗p2a2(p1=2a1=2p2=3a2=1)
121,2,3,4,6,12而12的因子有1,2,3,4,6,12

1=20301=20∗30
2=21302=21∗30
3=20313=20∗31
4=22304=22∗30
6=21316=21∗31
12=223112=22∗31

=1+2+3+4+6+12=28=(20+21+22)(30+31)=左边加起来=1+2+3+4+6+12=28=(20+21+22)∗(30+31)=右边

(20+21+22)(20+21+22) 是一个首项为1,公比为2的等比数列

(30+31)(30+31) 是一个首项为1 , 公比为3的等比数列

因为我们对n进行算数分解 所以不可能出现公比为1的情况

根据等比数列求和公式 (1qn)/(1q)(1−qn)/(1−q)

分子分母同时乘1(qn1)/(q1)−1(qn−1)/(q−1)

因为第一项是从00开始的 所以 对于piai 它的前n项和为(pai+1i1)/(pi1)(piai+1−1)/(pi−1)

σ(N)=ni=1pai+1i1pi1σ(N)=∏i=1npiai+1−1pi−1


求1到n的因子和的和

公式:

ans=σ(1)+σ(2)+σ(3)++σ(n)ans=σ(1)+σ(2)+σ(3)+⋯+σ(n)

这里以n=12n=12为例:
1:11:1
2:1,22:1,2
3:1,33:1,3
4:1,2,44:1,2,4
5:1,55:1,5
6:1,2,3,66:1,2,3,6
7:1,77:1,7
8:1,2,4,88:1,2,4,8
9:1,3,99:1,3,9
10:1,2,5,1010:1,2,5,10
11:1,1111:1,11
12:1,2,3,4,6,1212:1,2,3,4,6,12

ans=σ(1)+σ(2)+σ(3)++σ(12)ans=σ(1)+σ(2)+σ(3)+⋯+σ(12)

ans=121+62+43+34+25+26+17+18+19+110+111+112ans=12∗1+6∗2+4∗3+3∗4+2∗5+2∗6+1∗7+1∗8+1∗9+1∗10+1∗11+1∗12

ans=ni=1n/iians=∑i=1nn/i∗i(这里n/in/i是整除的意思)

然后我们这样看
ans=121+62+43+34+2(5+6)+1(7+8+9+10+11+12)ans=12∗1+6∗2+4∗3+3∗4+2∗(5+6)+1∗(7+8+9+10+11+12)

则对于每一个 n/in/i 都有一个范围

n/in/i 范围[l,r][l,r]
当前n/in/i 在范围内 对ansans的贡献是
12[1,1]12112[1,1]12∗1
6[2,2]626[2,2]6∗2
4[3,3]434[3,3]4∗3
3[4,4]343[4,4]3∗4
2[5,6]2(5+6)2[5,6]2∗(5+6)
1[7,12]1(7+8++12)1[7,12]1∗(7+8+−−−+12) 然后这里可以等差数列求和

可以发现 每一个ll等于上一个r+1r+1r=n/(n/l)r=n/(n/l)这里是整除

/*
 *      求1到n的因子和的和
 *
 * 
 */

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;

ll Sigma(ll n)
{
    ll ans=0;
    ll r;
    for(ll l=1;l<=n;l=r+1)
    { 
        r=n/(n/l);
        ans+=(l+r)*(r-l+1)/2*(n/l);

        //(l+r)             首项+尾项
        //(r-l+1)           项数 
        //(l+r)*(r-l+1)/2   区间和
        //(n/l) 是拥有这样因子的区间个数 
        //      printf("l:%2lld  r:%2lld  l+r:%2lld  r-l+1:%lld     n/l:%2lld    ans:%3lld\n",l,r,l+r,r-l+1,n/l,ans); 
    }
    return ans;
}

int main()
{
    ll n;
    while(~scanf("%lld",&n))
        printf("%lld\n",Sigma(n));
    return 0;
}

求1到n的因子个数的和

还是以n=12n=12为例

i:123456789101112
因子个数122324243426

ans=τ(1)+τ(2)+τ(3)+τ(4)+τ(5)+τ(6)+τ(7)+τ(8)+τ(9)+τ(10)+τ(11)+τ(12)ans=τ(1)+τ(2)+τ(3)+τ(4)+τ(5)+τ(6)+τ(7)+τ(8)+τ(9)+τ(10)+τ(11)+τ(12)
ans=1+2+2+3+2+4+2+4+3+4+2+6ans=1+2+2+3+2+4+2+4+3+4+2+6
ans=11+25+32+43+61ans=1∗1+2∗5+3∗2+4∗3+6∗1
ans=ni=1(ni)ans=∑i=1n(ni)

/*
 *  求1到n的因子个数的和
 *
 */
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;

ll f(ll n)
{
    ll ans=0;
    ll r;
    for(ll l=1;l<=n;l=r+1)
    {
        r=n/(n/l);
        ans+=n/l*(r-l+1);
        //(n/l)     代表因子个数 
        //(r-l+1)   是有这个因子个数的区间长度
    }
    return ans;
}

int main()
{
    ll n;
    while(~scanf("%lld",&n))
        printf("%lld\n",f(n));
    return 0;
}


GCD和LCM

利用算术基本定理可以重新定义整数a和b的最大公因子gcd(a,b)gcd(a,b) 和最小公倍数lcm(a,b)lcm(a,b)
将a和b写成

a=pa11pa22pa33panna=p1a1p2a2p3a3⋯pnan

b=pb11pb22pb33pbnnb=p1b1p2b2p3b3⋯pnbn

ab所以a和b的最大公因数与最小公倍数可以写成这个形式,也可以由下边这个形式求得

gcd(a,b)=pmin(a1,b1)1pmin(a2,b2)2pmin(a3,b3)3pmin(an,bn)ngcd(a,b)=p1min(a1,b1)p2min(a2,b2)p3min(a3,b3)⋯pnmin(an,bn)

lcm(a,b)=pmax(a1,b1)1pmax(a2,b2)2pmax(a3,b3)3pmax(an,bn)nlcm(a,b)=p1max(a1,b1)p2max(a2,b2)p3max(a3,b3)⋯pnmax(an,bn)

未完待续…

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值