B站学习视频(图片来源)
求解公式

1.所有因子个数

如果一个数是因数,就不断除这个数,保存这个因子次方的数 temp++;
运用所有因子个数计算公式(见上图),保存因子个数的 ans不断乘( temp+1 )。
注意 :
当最后,在 x 不断除因数得到的值有两种情况:

  1. x == 1,这说明 x 没有其他因子了。
  2. x != 1, 这时 x 为其一个素数因子(且这个因子大于 根号x ),所以最后再乘(1+1)。
    代码学习链接
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

ll dcpCount(ll x){//所有因子的个数(包括1)
ll ans = 1;
for(ll i = 2; i * i <= x; i++){
if(x % i == 0){
ll temp = 0;
while(x % i == 0){
x /= i;
temp++;
}
ans *= (temp+1);//运用上面的公式,计算所有因子的个数
}
}
if(x > 1) ans *= 2;
return ans;
}

评论




博客内容遵循 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 协议

载入天数...载入时分秒... 本站使用 Volantis 作为主题 鲁ICP备-20012065号