本文共 647 字,大约阅读时间需要 2 分钟。
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;}
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*=(x+1); return ans;}
转载地址:http://jpyzi.baihongyu.com/