The number of divisors(约数) about Humble Numbers
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 4586 Accepted Submission(s): 2263
Now given a humble number, please write a program to calculate the number of divisors about this humble number.For examle, 4 is a humble,and it have 3 divisors(1,2,4);12 have 6 divisors.
-
-
求某数的约数的个数,将该数进行质因数分解,则约数个数是各指数+1的乘积!
我会质因数分解,但是他说的约数的个数指什么?
比如,9的约数是3的平方,约数个数就是2对吗?
那约数个数只是各指数+1的乘积是什么意思?
指数是指什么数?优质解答
首先分解质因数,得到一个分解公式;
然后搞清楚有几种不同的质因数,每种素因数出现了几次,把每种素因数出现的次数+1,相乘就是所以因数的个数了:
如125=5*5*5,只有一种质因数5,5出现了3次,那么所有因素=3+1=4个
再如360=2*2*2*3*3*5,有三种质因数2/3/5,每种质因数数分别出现了3次、2次、1次,所以共有因素为(3+1)*(2+1)*(1+1)=24个;
所以通用公式是这样的,有质因数n种,分别为X1,X2,X3...Xn,每种质因数分别出现了a1,a2,a3...an次,那么所有的因素=(X1+1)*(X2+1)*(X3+1)*.*(Xn+1);
上面举得两个例子分别是n为1和3的情况.
(1)求某数的约数的个数,将该数进行质因数分解,则约数个数是(各质因数)的指数+1的乘积!
(2)我会质因数分解,但是他说的约数的个数指什么?所有的因数(约数),包括1和这个数本身.
(3)比如,9的约数是3的平方,约数个数就是2对吗?
9=3*3=3² 质因数的指数是2,所以有2+1=3个约数,分别为1,3,9
(4)那约数个数只是各指数+1的乘积是什么意思?
18=2*3² ,其中质因数2的指数为1,3指数的为2,所以18约数(因数)个数为(1+1)*(2+1)=6,所有约数为:1,2,3,6,9,18
(5)指数是指什么数?所谓指数是质因数的指数 如:2³中 的³就是指数
-
#include<iostream>
#include<cstring>
using namespace std;
//求某数的约数的个数,将该数进行质因数分解,则约数个数是各指数+1的乘积!
int main()
{
long long n,sum; //注意64位
while(cin>>n && n)
{
int s[4];
for(s[0]=1; n%2==0; s[0]++, n/=2);
for(s[1]=1; n%3==0; s[1]++, n/=3);
for(s[2]=1; n%5==0; s[2]++, n/=5);
for(s[3]=1; n%7==0; s[3]++, n/=7);
sum=s[0]*s[1]*s[2]*s[3];
cout<<sum<<endl;
}
return 0;
}