线性筛+快速乘

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_30358129/article/details/82628238

线性筛

int prime[N]; //素数表下标从1开始
bool mark[N]; //mark[i]==1表示i不是素数
int tot; 
void get_list(int n){   
    mark[1] = 1;
    for(int i = 2;i <= n;i ++){
        if(!mark[i]) prime[++tot] = i;
        for(int j = 1;j<=tot&&prime[j]*i<=n;j ++){
            mark[i*prime[j]] = 1;
            if(!i%prime[j]) break;
        }
    }
}

快速乘

inline ll mul(ll a,ll b,ll m){
     ll c = a*b-(ll)((long double)a*b/m+0.5)*m; 
     return c<0 ? c+m : c; 
}

猜你喜欢

转载自blog.csdn.net/qq_30358129/article/details/82628238