constint N=1000010;int primes[N], cnt;bool st[N];voidget_primes(int n){
for(int i =2; i <= n; i ++){
if(!st[i]) primes[cnt ++]= i;for(int j =0; primes[j]<= n / i; j ++){
st[primes[j]* i]=true;if(i % primes[j]==0)break;}}}intmain(){
int n;
cin >> n;get_primes(n);
cout << cnt << endl;return0;}
乘法逆元
#include<iostream>#include<algorithm>usingnamespace std;typedeflonglong LL;constint N =100010, mod =1e9+7;int fact[N], infact[N];intqmi(int a,int k,int p){
int res =1;while(k){
if(k &1) res =(LL)res * a % p;
a =(LL)a * a % p;
k >>=1;}return res;}intmain(){
fact[0]= infact[0]=1;for(int i =1; i < N; i ++){
fact[i]=(LL)fact[i -1]* i % mod;
infact[i]=(LL)infact[i -1]*qmi(i, mod -2, mod)% mod;}int n;scanf("%d",&n);while(n --){
int a, b;scanf("%d%d",&a,&b);printf("%d\n",(LL)fact[a]* i