因子和与因子个数
求因子个数
int count(int n) { int s=1; for(int i=2;i*i<=n;i++) { if(n%i==0)//判断i是否为n的素因子 { int a=0; do{ n/=i; a++; }while(n%i==0);//根据素因子和公式此处为i的n次方 s=s*(a+1); } } if(n>1) s=s*2; return s; }
求因子和
1 int sum(int n) 2 { 3 int s=1; 4 for(int i=2;i*i<=n;i++) 5 { 6 if(n%i==0) 7 { 8 int a=1; 9 do{ 10 n/=i; 11 a*=i;//求an 12 }while(n%i==0); 13 s=s*(a*i-1)/(i-1);//等比数列求和公式,a1=1,i为公比 14 15 } 16 } 17 if(n>1) s=s*(1+n); 18 return s; 19 }