题目:

樱花_约数个数


题解:

樱花_约数个数_02


我们先筛出质数,再对 樱花_约数个数_03 分解质因数关于 樱花_约数个数_03 分解质因数的方法可以看我的上一篇博客 ​​阶乘分解​​将樱花_约数个数_03分解为以下形式

樱花_i++_06


对于每一个分解出来的质因数,可以从樱花_c++_07选到樱花_分解质因数_08,所以有樱花_分解质因数_09种可能,所以约数个数为

樱花_c++_10

需要注意的是我们这里分解的是樱花_约数个数_03,而最终需要的是樱花_约数个数_12 ,所以对于每一次分解的樱花_分解质因数_08应该乘以樱花_i++_14

#include <bits/stdc++.h>
using namespace std;
long long pri[1000005];
long long primes[1000005];
long long mod=1e9+7;
int con=0;
void prime(long long n)
{
for(int i=1;i<=n;i++) pri[i]=1;
pri[1]=0;
for(int i=2;i<=n;i++)
{
if(pri[i])
{
primes[++con]=i;
for(int j=2;j*i<=n;j++)
{
pri[j*i]=0;
}
}
}
}
int main()
{
long long n;
cin>>n;
prime(n);
long long ans=1;
for(int i=1;i<=con;i++)
{
long long m=n;
long long c=0;
long long a=primes[i];
while(m)
{
c+=(m/a);
m/=a;
}
ans=(ans*(2*c+1)%mod)%mod;
}
cout<<ans<<endl;
return 0;
}