欧拉函数及定理浅谈

欧拉函数及定理浅谈

什么是 φ \varphi φ(欧拉函数)

φ ( x ) \varphi(x) φ(x)是指在 1 → x − 1 1 \rightarrow x-1 1x1中与x互质的数。

我们先不说它有什么用处,先来讲一讲求法。

少量或数据较大的求法 ⟶ \longrightarrow 时间复杂度 O ( n ) O(\sqrt{n}) O(n )

代码如下:

int phi(int x)
{
    int res = x;
    for (int i = 2;i * i <= x; i++)
        if (x % i == 0)
        {
            res = res / i * (i - 1);
            while (x % i == 0) x /= i;
        }
    if (x > 1)
        res = res / x * (x - 1);
    return res;
}

大量较小的数据的方法:欧拉筛 → \rightarrow 时间复杂度 O ( n ) O(n) O(n)

其思路便是在欧拉筛质数的时候顺便求出 φ \varphi φ

代码如下:

const int N = 1e6 + 5, M = 7.85e4;
int prime[M], phi[N], cnt;
void Euler()
{
    for (int i = 1;i < N; i++)
        phi[i] = i;
    for (int i = 2;i < N; i++)
    {
        if (phi[i] == i)
            prime[++cnt] = i, phi[i] = i - 1;
        for (int j = 1;j <= cnt and i * prime[j] < N; j++)
            if (i % prime[j])
                phi[i * prime[j]] = phi[i] * (prime[j] - 1);
            else
            {
                phi[i * prime[j]] = phi[i] * prime[j];
                break;
            }
    }
    return;
}

欧拉函数的作用

在这里为了更方便的解释欧拉函数的作用,我们先引入一个概念

欧拉定理

对于 g c d ( a , b ) = 1 gcd(a, b) = 1 gcd(a,b)=1 a , b a, b a,b两个数

有: a φ ( b ) ≡ 1 ( m o d   b ) a^{\varphi(b)}\equiv1(mod\ b) aφ(b)1(mod b)

再介绍一个欧拉定理的特殊情况 → \rightarrow 费马小定理

费马小定理

p p p是质数的时候,且 a a a不是 p p p的倍数时

a p − 1 ≡ 1   ( m o d   p ) a^{p-1} \equiv 1\ (mod\ p) ap11 (mod p)

在这里,我们可以知道 φ ( p ) = p − 1 \varphi(p) = p - 1 φ(p)=p1

故而 a φ ( p ) = a p − 1 a^{\varphi(p)}=a^{p-1} aφ(p)=ap1

所以我们可以说费马小定理是欧拉定理的一个特殊情况


那么如果当 g c d ( a , b ) ≠ 1 gcd(a, b) \neq 1 gcd(a,b)=1的情况呢

这个时候我们有结论:

a c ≡ a c   m o d   φ ( m ) , g c d ( a , m ) = 1 a^c\equiv a^{c\ mod\ \varphi(m)}, gcd(a, m) = 1 acac mod φ(m),gcd(a,m)=1

a c ≡ a c , g c d ( a , m ) ≠ 1 , c < φ ( m ) a^c\equiv a^c, gcd(a, m) \neq 1, c < \varphi(m) acac,gcd(a,m)=1,c<φ(m)

a c ≡ a c   m o d   φ ( m ) + φ ( m ) , g c d ( a , m ) ≠ 1 , c ≥ φ ( m ) a^c\equiv a^{c\ mod\ \varphi(m)+\varphi(m)}, gcd(a, m)\neq1,c\geq\varphi(m) acac mod φ(m)+φ(m),gcd(a,m)=1,cφ(m)

我们便可以用这个来降幂

例题

super a ^ b mod c

sum

Thanks!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值