block-quote 在本页chevron-down
copy 复制 chevron-down
我的模板 chevron-right 数学 欧拉函数 欧拉函数(Euler's totient function),即 φ ( n ) \varphi(n) φ ( n ) ,表示的是小于等于 n n n 和 n n n 互质的数的个数。
比如说 φ ( 1 ) = 1 \varphi(1) = 1 φ ( 1 ) = 1 。
当 n n n 是质数的时候,显然有 φ ( n ) = n − 1 \varphi(n) = n - 1 φ ( n ) = n − 1 。
利用唯一分解定理,我们可以把一个整数唯一地分解为质数幂次的乘积。
设 n = ∏ i = 1 n p i k i n = \prod_{i=1}^{n}p_i^{k_i} n = ∏ i = 1 n p i k i ,其中 p i p_i p i 是质数,那么 φ ( n ) = n × ∏ i = 1 s p i − 1 p i \varphi(n) = n \times \prod_{i = 1}^s{\dfrac{p_i - 1}{p_i}} φ ( n ) = n × ∏ i = 1 s p i p i − 1 。
若 gcd ( a , m ) = 1 \gcd(a, m) = 1 g cd( a , m ) = 1 ,则 a φ ( m ) ≡ 1 ( m o d m ) a^{\varphi(m)} \equiv 1 \pmod{m} a φ ( m ) ≡ 1 ( mod m ) 。
若 p p p 为素数, gcd ( a , p ) = 1 \gcd(a, p) = 1 g cd( a , p ) = 1 ,则 a p − 1 ≡ 1 ( m o d p ) a^{p - 1} \equiv 1 \pmod{p} a p − 1 ≡ 1 ( mod p ) 。
( p − 1 ) ! ≡ − 1 ( m o d p ) (p-1)!\equiv-1\pmod{p} ( p − 1 )! ≡ − 1 ( mod p )
若 p p p 为质数,则 p p p 可整除 ( p − 1 ) ! + 1 (p-1)!+1 ( p − 1 )! + 1 。
复制 void phi_table ()
{
for ( int i = 1 ; i < maxn ; i ++ ) {
phi [ i ] = i ;
}
for ( int i = 2 ; i < maxn ; i ++ ) {
if ( phi [ i ] == i ) {
for ( int j = i ; j < maxn ; j += i ) {
phi [ j ] = phi [ j ] / i * ( i - 1 );
}
}
}
} Pollard Rho 算法求欧拉函数