唯一分解定理入门---分解质因数

本文介绍了算术基本定理(唯一分解定理),阐述了大于1的自然数能被唯一分解为质数乘积的原理。讨论了如何利用这一定理解决数论问题,包括计算正因数个数、最大公因子和最小公倍数,并通过三个具体的编程题目(Pairs Forming LCM、Aladdin and the Flying Carpet、Mysterious Bacteria)展示了在实际问题中的应用,如求最小公倍数、寻找特定条件的数对以及求解指数问题。
摘要由CSDN通过智能技术生成

算术基本定理(唯一分解定理)

认识:  
任何大于1的自然数,都可以唯一分解成有限个质数的乘积

æ¥èªç»´åºç¾ç§ 
 
这里P均为质数,其指数a是正整数。 
这样的分解称为的标准分解式。

 

唯一分解定理的基本应用:

① 一个大于1的正整数N,将其化成标准分解式N = p1^a1 * p2^a2 *....pn^an(例如24 = 2^3 * 3^1),那么N的正因数个数为σ1(N) = (a1+1)*(a2+1)*....(an+1)( 因子各不相同)

(p1..pn为N的素因子,a1...an为各素数的幂)

② 所有正因数之和为σ2 = (1+p1+p1^2+...p1^a1)* (1+p2+p2^2+....p2^a2) * ..... *(1+pn+pn^2+.....pn^an);当σ2(N) = 2*N时称N为完全数,是否存在奇完全数,尚不明确

③ 利用算数基本定理可以重新定义a和b的最大公因子(a,b)和最小公倍数(a,b), a*b= 最大公因子(a,b)* 最小公倍数(a,b)

 

 唯一分解定理模板
 

void find_prime()//素数打表
{
    k=0;
    for(ll i=2;i<maxn;i++)
    {
        if(!p[i])
        {
            prim[k++]=i;//储存质素
            for(ll j=i*2;j<maxn;j+=i)
            {
                p[j]=1;
            }
        }
    }
}
ll slove(ll a)
{
    ll s=1;
    for(int i=0;i<k&&a;i++)
    {
        ll x=0;
        if(prim[i]>a)
            break;
        //核心代码 按顺序对素数取余,得到该素数的指数
        while(a%prim[i]==0)//注意是while啊!
        {
            a/=prim[i];
            x++;
        }
        s*=(x+1);//得到一个素数的指数后用公式
    }
    if(a>1)
    {
        s*=(1+1);//如果a不能被整分,说明a还有一个素数是它的约数,此时x=1,所以是1+1,
    }

    return s;
}

 

1.Pairs Forming LCM

  题目:https://vjudge.net/problem/LightOJ-1236

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值