快速幂取模&&素数筛选&&最大公约数

来源:互联网 发布:旅行软件排行 编辑:程序博客网 时间:2024/05/29 05:11

1.碾转相除

int  gcd(int a,int b){if(b==0) return a;return gcd(b,a%b);}

(机智的师兄说写成三目运算符更好看-_-!)


2.埃氏筛选

要枚举n以内的素数。便从2~m(范围内最大的素数)的倍数全从n个数内划去,反复操作,即可枚举

int a[maxn];int isprime[maxn];int sieve(int n){    int p=0;    for(int i=0;i<=n;i++)        isprime[i]=1;        isprmie[0]=isprime[1]=0;        for(int i=2;i<=n;i++)        {            if(isprime[i])            {                a[p++]=i;                for(int j=i*2;j<=;j+=i)                    isprime[j]=0;            }        }        return p;}

3.快速幂取模

int qumo(int a,int b,int c){    int ans=1;    a=a%c;    while(b>0)    {        if(b%2==1)            ans=(ans*a)%c;        b/=2;        a=(a*a)%c;    }    return ans;}


0 0