求一个数的因子个数
int count(int n){
int s=1;
for(int i=2;i*i<=n;i++){
if(n%i==0){
int a=0;
while(n%i==0){
n/=i;
a++;
}
s=s*(a+1);
}
}
if(n>1) s=s*2;
return s;
}
求一个数的因子和
int sum(int n){
int s=1;
for(int i=2;i*i<=n;i++){
if(n%i==0){
int a=1;
while(n%i==0){
n/=i;
a*=i;
}
s=s*(a*i-1)/(i-1);
}
}
if(n>1) s=s*(1+n);
return s;
}
本文介绍了一种高效算法,用于计算任意整数的因子个数及因子总和。通过分解质因数并利用数学公式,该算法能够在较短时间内得出结果,适用于数学竞赛及编程挑战。
621

被折叠的 条评论
为什么被折叠?



