求满足以下条件的 x 的个数
① x∈[1,n!]
② 设 pi 为质数且 pi|x,那么 pi>m,对于所有的 pi 均成立
答案对 100000007 取模
知识
1.x的所有素因子大于m,则x与m!互素
2.已知phi[(i-1)!],递推地求phi[i!]
如果i是素数,phi[i!]=phi[(i-1)!]*(i-1)
如果i不是素数,phi[i!]=phi[(i-1)!]*i
3.phi[n!]=phi[m!]*(n!/m!)
#include <cstdio> #define N 10000005 #define MOD 100000007 typedef long long LL; int n,m,Prime[N],cnt; bool notPrime[N]; LL phifac[N]; void rush(int n) { notPrime[1]=1; for(int i=2;i<=N;++i) { if(!notPrime[i]) Prime[++cnt]=i; for(int j=1;j<=cnt&&i*Prime[j]<=N;++j) { notPrime[i*Prime[j]]=1; if(i%Prime[j]==0) break; } } } int main() { rush(N); for(;scanf("%d%d",&n,&m)&&n&&m;) { phifac[1]=1; for(int i=2;i<=m;++i) if(notPrime[i]) phifac[i]=phifac[i-1]*i%MOD; else phifac[i]=phifac[i-1]*(i-1)%MOD; LL ans=phifac[m]; for(int i=m+1;i<=n;++i) ans=ans*i%MOD; printf("%lld ",ans-1); } return 0; }