zoukankan      html  css  js  c++  java
  • 基本算数定理快速求约数个数——lightoj1208

    #include<bits/stdc++.h>
    using namespace std;
    #define ll long long
    #define maxn 1000005
    
    bool vis[maxn];
    int m,primes[maxn];
    void init(){
        for(int i=2;i<maxn;i++){
            if(!vis[i])
                primes[++m]=i;
            for(int j=1;j<=m;j++){
                if(primes[j]*i>=maxn)break;
                vis[primes[j]*i]=1;
                if(i%primes[j]==0)break;
            }
        }
    }
    
    /*基本算数定理*/ 
    ll calc(ll n){
        ll res=1;
        for(int i=1;i<=m && primes[i]*primes[i]<=n;i++)
            if(n%primes[i]==0){
                ll cnt=1;
                while(n%primes[i]==0)
                    ++cnt,n/=primes[i];
                res*=cnt;
            }
        if(n>1)res=res*2;
        return res;
    }
    
    int main(){
        init();
        int t;cin>>t;
        for(int tt=1;tt<=t;tt++){
            ll n;
            scanf("%lld",&n);
            printf("Case %d: %lld
    ",tt,calc(n)-1);
        } 
    }
  • 相关阅读:
    TCP之Nagle算法与TCP_NODELAY
    CSPS模拟 87
    CSPS模拟 86
    CSPS模拟 85
    CSPS模拟 84
    CSPS模拟 83
    CSPS模拟 82
    CSPS模拟 81
    CSPS模拟 80
    CSPS模拟 79
  • 原文地址:https://www.cnblogs.com/zsben991126/p/11130623.html
Copyright © 2011-2022 走看看