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 原文:/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 原文:/sxh759151483/article/details/80137459 版权声明:本文为博主原创文章,转载请附上博文链接!
如果觉得《求一个数所有因子的个数 因子和》对你有帮助,请点赞、收藏,并留下你的观点哦!