注:若无说明,数值范围均为\mathbf{Z}Z的子集
\large\texttt{欧几里得算法}欧几里得算法若a<b,\gcd(b,a\bmod b)=\gcd(b,a)=\gcd(a,b)a<b,gcd(b,amodb)=gcd(b,a)=gcd(a,b)
若a\geqslant b,a=q\times b+r,0\leqslant r<ba⩾b,a=q×b+r,0⩽r<b
r=a\bmod br=amodb
对于a,ba,b的任意公约数dd,d|(a-qb)d∣(a−qb),即d|rd∣r,因此dd也是b,rb,r的公约数。
递归写法:
int gcd(int a,int b){
return b?gcd(b,a%b):a;
}
非递归写法:
int gcd(int a,int b){
while(a^=b^=a^=b%=a);return b;
}
\large\texttt{欧拉函数 }\varphi\left(N\right)=N\prod_{\text{质数}p|N}\left(1-\frac{1}{p}\right)欧拉函数 φ(N)=N质数p∣N∏(1−p1)
证明:[1,N][1,N]中不与NN含有共同质因子pp或qq的个数为N-\dfrac{N}{p}-\dfrac{N}{q}+\dfrac{N}{pq}=N\left(1-\dfrac{1}{p}-\dfrac{1}{q}-\dfrac{1}{pq}\right)=N\left(1-\dfrac{1}{p}\right)\left(1-\dfrac{1}{q}\right)N−pN−qN+pqN=N(1−p1−q1−pq1)=N(1−p1