AcWing
  • 首页
  • 课程
  • 题库
  • 更多
    • 竞赛
    • 题解
    • 分享
    • 问答
    • 应用
    • 校园
  • 关闭
    历史记录
    清除记录
    猜你想搜
    AcWing热点
  • App
  • 登录/注册

欧拉函数、快速幂、扩展欧几里得算法、中国剩余定理(算法基础课 四、数学知识)

作者: 作者的头像   小羊可爱捏 ,  2025-06-11 22:23:33 · 安徽 ,  所有人可见 ,  阅读 2


0


欧拉函数:
1.欧拉函数𝜑(𝑛)是定义在正整数n上的函数,表示小于或等于n的正整数中与n互质的数的个数
𝜑(𝑛)=n(1-1/p1)(1-1/p2)…(1-1/pk),(p为n的质因数); 由容斥定理推导,可由分解质因数求得n的质因数。

2.筛法求欧拉函数:给定一个正整数n,求 1∼n中每个数的欧拉函数之和。
线性筛法 + 对i是否与prime[j]互质讨论 
(1) 若i为质数 𝜑(i)=i-1;
(2) 若(i % prime[j] == 0) 𝜑(i * prime[j]) = prime[j] * 𝜑(i);
(3) 若(i % prime[j] != 0) 𝜑(i * prime[j]) = (prime[j]-1) * 𝜑(i);

快速幂:
1.快速幂:快速求𝑎^𝑏%p的问题,时间复杂度:O(logb),若对于n组数据,那么
时间复杂度为O(n∗logb) a^2^0 -> a^2^1 ->…-> a^2^logb

2.快速幂求逆元: 当n为质数时,可以用快速幂求逆元:a / b ≡ a * x (mod n)
两边同乘b可得 a ≡ a * b * x (mod n)即 1 ≡ b * x (mod n)
同 b * x ≡ 1 (mod n)由费马小定理可知,当n为质数时b ^ (n - 1) ≡ 1 (mod n)
拆一个b出来可得 b * b ^ (n - 2) ≡ 1 (mod n)故当n为质数时,
b的乘法逆元 x = b ^ (n - 2).

**欧拉定理:(若a与n互质) [ a^𝜑(n) ≡ 1 (mod n) ]** -> 
**费马小定理:当n为质数时b ^ (n - 1) ≡ 1 (mod n)**

扩展欧几里得算法:
给定n对正整数 ai,bi,对于每对数,求出一组 xi,yi,使其满足 ai×xi+bi×yi=gcd(ai,bi)

设ax1+by1=gcd(a,b), bx2+(a%b)y2=gcd(b,a%b);
由gcd(a,b)=gcd(b,a%b),可得:ax1+by1=bx2+(a%b)y2;
即:ax1+by1=bx2+(a-(a/b)*b)y2=ay2+bx2-(a/b) * by2;
即:ax1+by1=ay2 + b(x2-(a/b)*y2)

`LL exgcd(LL a, LL b, LL &x, LL &y)
{
    if (!b)
    {
        x = 1, y = 0;
        return a;
    }
    LL d = exgcd(b, a % b, y, x);
    y -= a / b * x;
    return d;
}`

中国剩余定理:
难搞

给定 2n个整数 a1,a2,…,an和 m1,m2,…,mn,求一个最小的非负整数 x,满足 ∀i∈[1,n],x≡mi(mod ai)。

例子:
X  %  3 = 2
X  %  5 = 3  利用 扩展欧几里得定理 计算
X  %  7 = 2

Y1 = 5×7×[(5×7)−1]3 并且[(5×7)−1]3 = 2
Y2 = 3×7×[(3×7)−1]5 并且[(3×7)−1]5 = 1
Y3 = 3×5×[(3×5)−1]7 并且[(3×5)−1]7 = 1

https://www.acwing.com/solution/content/8552/

0 评论

App 内打开
你确定删除吗?
1024
x

© 2018-2025 AcWing 版权所有  |  京ICP备2021015969号-2
用户协议  |  隐私政策  |  常见问题  |  联系我们
AcWing
请输入登录信息
更多登录方式: 微信图标 qq图标 qq图标
请输入绑定的邮箱地址
请输入注册信息