您的位置:首页 > 其它

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

2014-03-09 21:01 246 查看
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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: