/*
51 nod 1189
运用了约数个数定理
对于一个大于1正整数n可以分解质因数,即:
n=a1^k1*a2^k2*……*ai^ki
则n的正约数的个数就是,质因数的指数+1再全部相乘,即
f(n)=(1+k1)*(1+k2)*……*(1+ki)
*/
#include <iostream>
#include <algorithm>
#include <stdio.h>
#include <math.h>
#include <string.h>
#define mod 1000000007
#define MAX 10000005
#define ll long long
#define PI acos(-1)
using namespace std;
int prime[MAX];
int p[MAX/10];
int k;
void isprime()//筛选出素数
{
k=0;
memset(prime,0,sizeof(prime));
for(ll i=2;i<MAX;i++)
{
if(!prime[i])
{
p[k]=i;
k++;
for(ll j=i*i;j<MAX;j=j+i)
prime[j]=1;
}
}
}
void Ex_gcd(ll a, ll b, ll &x, ll &y)
{
if(b == 0)
{
x = 1;
y = 0;
return;
}
ll x1, y1;
Ex_gcd(b, a%b, x1, y1);
x = y1;
y = x1-(a/b)*y1;
}
ll get(ll a,ll b)
{
if(a<b)
return 0;
return a/b+get(a/b,b);
}
int main()
{
isprime();
int n;
cin>>n;
ll ans=1;
for(ll i=0;i<k&&p[k]<=n;i++)
{
ll tmp=(get(n,p[i])*2+1)%mod;
ans=ans*tmp%mod;
}
ll x,y;
Ex_gcd(2,mod,x,y);
cout<<(((1+ans)%mod*x)%mod+mod)%mod<<endl;
return 0;
}
51 nod 1189
运用了约数个数定理
对于一个大于1正整数n可以分解质因数,即:
n=a1^k1*a2^k2*……*ai^ki
则n的正约数的个数就是,质因数的指数+1再全部相乘,即
f(n)=(1+k1)*(1+k2)*……*(1+ki)
*/
#include <iostream>
#include <algorithm>
#include <stdio.h>
#include <math.h>
#include <string.h>
#define mod 1000000007
#define MAX 10000005
#define ll long long
#define PI acos(-1)
using namespace std;
int prime[MAX];
int p[MAX/10];
int k;
void isprime()//筛选出素数
{
k=0;
memset(prime,0,sizeof(prime));
for(ll i=2;i<MAX;i++)
{
if(!prime[i])
{
p[k]=i;
k++;
for(ll j=i*i;j<MAX;j=j+i)
prime[j]=1;
}
}
}
void Ex_gcd(ll a, ll b, ll &x, ll &y)
{
if(b == 0)
{
x = 1;
y = 0;
return;
}
ll x1, y1;
Ex_gcd(b, a%b, x1, y1);
x = y1;
y = x1-(a/b)*y1;
}
ll get(ll a,ll b)
{
if(a<b)
return 0;
return a/b+get(a/b,b);
}
int main()
{
isprime();
int n;
cin>>n;
ll ans=1;
for(ll i=0;i<k&&p[k]<=n;i++)
{
ll tmp=(get(n,p[i])*2+1)%mod;
ans=ans*tmp%mod;
}
ll x,y;
Ex_gcd(2,mod,x,y);
cout<<(((1+ans)%mod*x)%mod+mod)%mod<<endl;
return 0;
}