求n!的因子數%1e9+7。ios
由惟一分解定理,一個數能夠拆成素數冪之積,即2^a * 3^b *……,n!=2*3*……*n,因此計算每一個素因子在這些數中出現的總次數(直接對2~n素因子分解便可),再用惟一分解定理公式,因子數=(a+1)*(b+1)*……。c++
#include<bits/stdc++.h> using namespace std; #define inf 0x3f3f3f3f #define ll long long const int N=200005; const int mod=1e9+7; const double eps=1e-8; const double PI = acos(-1.0); #define lowbit(x) (x&(-x)) int a[N]; int main() { std::ios::sync_with_stdio(false); ll n; cin>>n; for(int i=2;i<=n;i++) { int ii=i; for(int j=2;j<=i;j++) { while(ii%j==0) { a[j]++; ii/=j; } } } ll ans=1; for(int i=2;i<=n;i++) { // cout<<a[i]<<endl; ans=(ans*(a[i]+1))%mod; } cout<<ans<<endl; return 0; }