Description
输入一个数字,输出其约数个数。例如10就有4个约数1,2,5,10
Format
Input
一个数字N,N< =2^63-1
Output
如题
Samples
输入数据 1
10
Copy
输出数据 1
4
思路
这道题跟求约数个数之二 和求约数个数之一差不多,只是数据又大了点,为此,我们可以用到一个公式:一个数约数数量等于这个数每一个质因数的数量+1的积,原因就是这个质因数有它数量加一种选法。
代码见下:
#include<bits/stdc++.h>
using namespace std;
long long int d=1e7;
bool f[21474848];
long long int z[21483648],sd,g[10000000],o[10000000],kk=1;
long long int n,m,mo=1e9+7;
long long int s;
int main(){
cin>>n;
m=n;
kk=1;
for(long long int i=2;i*i<=m;i++){
sd=0;
while(m%i==0){
sd++;
m/=i;
}
kk*=(sd+1);
}
if(m!=1) kk*=2;
cout<<kk;
}