题目
输入一个数字n,输出其约数。例如10有4个约数,分别是1,2,5,10。
输入输出格式
输入格式
一个数字n,n<=2^63-1。
输出格式
输出n的约数个数。
输入输出样例
输入
10
输出
4
题解
对于这道题,我们可以很容易想到数学中一个非常著名的定理:唯一分解定理。
什么是唯一分解定理?唯一分解定理是指:任何一个大于一的自然数N,如果N不为质数,都可以唯一分解成有限个质数的成绩:
N=P1^a1*P2^a2*P3^a3...Pn^an
这里的P1<P2<...<Pn均为质数,其指数ai是正整数。
因此就可以想到我们的因子个数公式:
(1+a1)*(1+a2)*(1+a3)...(1+an)
C++代码
#include<bits/stdc++.h>
using namespace std;
long long n,cnt=1;
int main()
{
cin>>n;
for(long long i=2;i*i<=n;i++)
{
long long num=0;
if(n%i==0)
{
while(n%i==0)
{
num++;
n/=i;
}
cnt*=num+1;
}
}
if(n!=1)cnt=cnt*2;
cout<<cnt;
return 0;
}