hse365平台-mobile365官网是多少-英国365网站最近怎么了

求一个数所有因子的个数,因子和

求一个数所有因子的个数,因子和

B站学习视频(图片来源)

1.所有因子个数

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

x == 1,这说明 x 没有其他因子了。x != 1, 这时 x 为其一个素数因子(且这个因子大于 根号x ),所以最后再乘(1+1)。 代码学习链接

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;

}

---------------------

作者:sxh759151483

来源:CSDN

原文:https://blog.csdn.net/sxh759151483/article/details/80137459

版权声明:本文为博主原创文章,转载请附上博文链接!

2.所有因子因子和 (包括1)

思想同上,也是公式的代码实现 图1. 待补 图一这个公式是等比数列求和;

ll dcpSum(ll x){//所有因子的和(包括1)

ll ans = 1;

for(ll i = 2; i * i <= x; i++){

if(x % i == 0){

ll temp = 1;

while(x % i == 0){

x /= i;

temp *= i;

}

ans *= (temp * i - 1) / (i - 1);//对每一个素数因子按图一公式求积。

}

}

if(x > 1) ans *= (1 + x);

return ans;

}

---------------------

作者:sxh759151483

来源:CSDN

原文:https://blog.csdn.net/sxh759151483/article/details/80137459

版权声明:本文为博主原创文章,转载请附上博文链接!