【模板】【数学】质因子分解

计算一个数有多少个正因子。

关于为什么sqrt(a),个人理解:a如果是合数,肯定可以又一个因子<=sqrt(a),所以这样先分解它的一个因子,分解到最后,有两种情况,a分解完了,变成1,那么ans就是答案了,另一种情况是,a是一个质数,我们枚举因子<=sqrt(a)枚举不到了,这时候我们ans*2,因为因子可以选择乘这个因子以及不乘这个因子。

ll cal( ll a ){
    ll res = 1;
    for(int i = 0;i<prime.size() && prime[i] <= sqrt(a);++i){
        ll tem = 0;
        while( a % prime[i] == 0 ){
            a/= prime[i];
            tem++;
        }
        res*=(1+tem);
    }
    if( a > 1 ) res *= 2;
    return res;
}

 

posted @ 2020-02-01 16:24  小布鞋  阅读(242)  评论(0)    收藏  举报