puluter

一个OIer的博客

数论

1.最大公约数 gcd:

gcd(a,b)=gcd(b,a%b) - a%b=0时停止递归


2.最小公倍数 lcm:

a*b/gcd(a,b)

gcd满足左右同除:gcd(a,b)=p<=>gcd(a/p,b/p)=1;


3.模法

(a+b)%c=(a%c+b%c)%c
(a-b)%c=(a%c-b%c+c)%c
(a*b)%c=(a%c)*(b%c)%c


4.逆元

若(b*x)%c=1,
则(a/b)%c=(a*x)%c

? 费马小定理:(a^p)%p=a;
因此推出,(a/b)%c一式中,a^(c-2)是a的逆元
即(a/b)%c=a^(c-1)%c

5.欧拉函数

φ(N)定义为小于等于N且与N互质的正整数的个数。 
公式:φ(N)=N*(p1-1)(p2-1)···(pn-1)/p1*p2····*pn

6.快速幂

ll fast_pow(ll a,ll b){
    ll ans=1;
    for(;y;y>>=1,x=((x%k)*(x%k))%k)
        if(y&1) ans=((x%k)*(ans%k))%k;
    return ans;
}

•一 如何判断一定范围(比如1~10000)里有多少个素数?
·欧拉筛法

二 如何判断一个很大的数(比如10000000007)是不是素数?
·从2遍历到根号下N

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/puluter/article/details/52373475
文章标签: 数论 快速幂
个人分类: OI
上一篇倍增
下一篇最长不下降子序列
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭