zoukankan      html  css  js  c++  java
  • 算术基本定理 求一个数的约数个数

    算术基本定理  求一个数的约数个数

        算术基本定理:

          分解素因数:n=(p1^k1)*(p2^k2)*...*(pn*kn).(分解方式唯一)

          n的约数个数为cnt(n)=(1+k1)*(1+k2)*...*(1+kn).

    bool isprime[maxn];
    vector<int> prime;
    
    void play_prime()
    {
        memset(isprime,1,sizeof(isprime));
        isprime[1]=0;
        for(int i=2;i<maxn;i++){
            if(!isprime[i]) continue;
            for(int j=i+i;j<maxn;j+=i){
                if(isprime[j]) isprime[j]=0;
            }
        }
        for(int i=2;i<maxn;i++)
            if(isprime[i]) prime.push_back(i);
    }
    
    ll Cnt(ll n)
    {
        ll res=1;
        for(int i=0;prime[i]<=n&&i<prime.size();i++){
            ll k=0;
            while(n%prime[i]==0){
                n/=prime[i];
                k++;
            }
            res*=(1+k);
        }
        if(n>1) res*=(1+1);
        return res;
    }
    View Code
    (2) 它的全体正因数之和为
     
                      
                                 
              当    时就称N为 完全数。 是否存在奇完全数,是一个至今未解决之猜想。
     
    (3) 利用算术基本定理可以重新定义整数a和b的最大公因子   和 最小公倍数 
     
     
     
     并证明  
     
    没有AC不了的题,只有不努力的ACMER!
  • 相关阅读:

    链表
    队列
    稀疏数组
    SQL——流程控制
    SQL——存储过程与函数
    SOA
    MVC模式
    《一线架构师实践指南》--阅读笔记三
    《一线架构师实践指南》-阅读笔记二
  • 原文地址:https://www.cnblogs.com/--560/p/4548125.html
Copyright © 2011-2022 走看看