我好菜啊……

欧拉函数φ(n),是小于n且和n互质的正整数(包括1)的个数。

性质:

1.对于质数n:

$φ(n)=n-1$

 

2..对于n=pk

$φ(n)=(p-1)*p^{k-1}$

3.积性函数的性质:

对于互质的m,n,有:

$φ(n*m)=φ(n)*φ(m)$

4.欧拉函数的计算式:

$φ(n)=n*\Pi (1-\frac{1}{p_i})$

5.求小于n且与n互质的数的和:

$S=n*φ(n)/2$

欧拉定理

对于互质的a,m,有:

$a^{\varphi (m)}\equiv 1(mod\  m)$

可以看出费马小定理是欧拉定理的特殊情况。

欧拉定理可以用于指数取模,即$x^y\ \equiv x^{y\ mod\ \varphi (p)}\ (mod\ p)$,p为质数

欧几里得定理

$gcd(a,b)=gcd(b,a\ mod\ b)$

扩展欧几里得

已知a,b,求解一组x,y,使他们满足$ax+by=gcd(a,b)$

证明:

ax+by=gcd(a,b);

1. (1) $a = 0$,$ax+by = gcd(a,b) = gcd(0,b) = b$,

此时$x = 0$(此时x的值是任意的),$y = 1$;

    (2)$b = 0$,$ax + by = gcd(a,b) = gcd(a,0) = a$,

此时$x = 1,y = 0$(此时y的值是任意的);

2.a和b都不为0时

$ax1 + by1 = gcd(a, b)$

由欧几里德定理:$gcd(a,b) = gcd(b, a\% b)$得

$ax1 + by1 = gcd(a,b) = gcd(b, a\% b)$ 即:

$bx2 + a\% by2 = gcd(b, a\% b) = ax1 + by1$

$a \% b = a - a/b*b$;

$ax1 + by1 = bx2 + (a - a/b*b)y2$;

                $=bx2 + ay2 - a/b*b*y2$;

                $=ay2 + b(x2-a/b*y2)$;

所以:$x1 = y2,y1 = x2 - a/b*y2$

代码

 

int exGcd(int a,int b,int &d,int &x,int &y)
{
    if(!b) { d=a;x=1;y=0; }
    else { gcd(b,a%b,d,y,x); y-= x*(a/b); }
}
View Code

相关文章: