【模板】【数学】质因子分解
计算一个数有多少个正因子。
关于为什么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; }

浙公网安备 33010602011771号