我好菜啊……
欧拉函数φ(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); } }