数论导论

news/2025/10/27 0:36:33/文章来源:https://www.cnblogs.com/jiangzhuang/p/19167671

数论导论

快速幂

求 $a^b\bmod p$ 的结果。

我们可以构造如下算法:

$ab=\begin{cases}(a)^2 &\texttt{b is even}\a(a{\frac{b-1}2})2&\texttt{b is odd}\end{cases}$

每次 $b$ 会减半,所以时间复杂度 $O(\log b)$。

模板题P1226 【模板】快速幂||取余运算

龟速乘

求 $ab\bmod p$ 的结果。

$a,b,p$ 都是 $10^{18}$ 级别。

我们同样可以构造类似的算法。

时间复杂度 $O(\log b)$。

整除

$a|b\Leftrightarrow b=ka (k\in\Z)$。

素数

$p\in\mathbf{P}\Leftrightarrow{x\mid x|p}={1,p}$。

可以证明有无穷多个素数。

还可以证明 $n$ 以内的素数个数 $\pi(n)\sim\frac n{\ln{n}}$。

埃氏筛

每个数筛掉倍数。一个优化就是只筛素数。

时间复杂度 $O(n\log\log{n})$。

int ntp[maxn];void ass() {for (int i = 2; i < maxn; i++) {if (ntp[i]) continue;for (int j = i + i; j < maxn; j += i)ntp[j] = 1;}
}

欧拉筛

还是筛倍数,但是让每个数只被最小的质因子筛到。

每个数都去和之前算出来的素数相乘来标记 ntp

如果当前素数超过了当前数的最小质因子了,那就不再用后面的素数更新了。

时间复杂度 $O(n)$。

int tot;
int ntp[maxn];
int prm[maxn];void ols() {for (int i = 2; i < maxn; i++) {if (!ntp[i]) prm[++tot] = i;for (int j = 1; j <= tot && prm[j] * i < maxn; j++) {ntp[i * prm[j]] = 1;if (i % prm[j] == 0)break;}}
}

模板题 P3383 【模板】线性筛素数

快速 $\pi(n)$ 算法

计 $p_m(n)$ 表示不包含 $prm_1,prm_2\dots prm_m$ 的因子的数的个数。

显然 $p_m(n)=p_{m-1}(n)-p_{m-1}(\lfloor\frac n{prm_m}\rfloor)$。

可以 $O(m\sqrt n)$ 计算。

让 $m$ 满足 $prm_m^3>n$,那么 $p_m(n)$ 就计算了素数和由两个素数乘起来的合数的个数。

第二个东西显然可以 $O(\sqrt n)$ 搞掉。

注意到 $m\sim \frac{n^{\frac13}}{\log n}$,所以总复杂度就是 $O(\frac{n^{\frac56}}{\log n})$。

实际上 $m$ 还可以取 $prm_m^4>n$,后面还是可以搞,可以做到 $O(\frac{n^{\frac34}}{\log n})$ 的复杂度。

最大公约数

$x=\gcd(a,b)\Leftrightarrow \forall_{y|a,b}{y|x}$。

辗转相减法

$\gcd(a,b)=\gcd(b,b-a)$。

证明:

设 $k=\gcd(a,b)$,那么 $a=kp$,$b=kq$,所以 $b-a=k(q-p)$,$b=kq$,那么有 $\gcd(a,b)|\gcd(b-a,b)$。

反之也有 $\gcd(b-a,b)|\gcd(a,b)$。

所以 $\gcd(a,b)=\gcd(b-a,a)$。

辗转相除法

直接多次应用上法可以得出

$\gcd(a,b)=\gcd(b,a \bmod b)$。

容易发现 $a\bmod b\le\frac a2$。

所以每一次 $a,b$ 中有一个会减半,总复杂度为 $O(\log{\min(a,b)})$。

exgcd

求解方程 $ax+by=1$ 的一组解。

考虑 gcd 的过程。

假如已经有了这样一组解:$bx'+(a\bmod b)y'=1$,

那我们可以构造出一组解:

$\begin{cases}x=y'\y=x'-y'\lfloor\frac ab\rfloor\end{cases}$

满足 $ax+by=1$。

时间复杂度不变。

模板题 P5656 【模板】二元一次不定方程 (exgcd)

练习题 P1516 青蛙的约会

同余

$a\equiv b\pmod p\Leftrightarrow a\bmod p=b\bmod p$。

容易发现有如下性质。

  • $a\equiv b\pmod p\Leftrightarrow a+c\equiv b+c\pmod p$

  • $a\equiv b\pmod p\Rightarrow ac\equiv bc\pmod p$

  • $a\equiv b\pmod p\Rightarrow ac\equiv bc\pmod {pc}$

乘法逆元

$a^{-1}a\equiv1\pmod p$

当 $\gcd(a,p)=1$ 且 $p$ 是质数时,由费马小定理 $a^p\equiv a\pmod p$,可以得出 $a^{p-2}a\equiv1\pmod p$。

证明:多项式定理。

如果 $p$ 不是质数,也可以看成是一个方程 $a^{-1}a+bp=1$,用拓欧来解即可。

模板题 P3811 【模板】乘法逆元

线性逆元

要求多个数的逆元。

先求出前缀积,再求所有数的积的逆元,再一次往前乘就可以了。

时间复杂度 $O(n+\log p)$。

模板题 P5431 【模板】乘法逆元 2

欧拉定理

$a^{\varphi(p)}\equiv 1\pmod p$

$(\gcd(a,p)=1)$

证明:

考虑 $\varphi(p)$ 计数到的所有数 ${a_1,a_2,a_3\dots a_{\varphi(p)}}$,显然互不相同且与 $p$ 互质。

注意到 $ka_1,ka_2,ka_3\dots ka_{\varphi(p)}$ 仍然满足上一条性质。

显然这两个集合模意义下就必然是相同的了。

那么两个集合中的数之积就应相等,$\prod\limits_{i=1}^{\varphi(p)}{a_i}\equiv k{\varphi(p)}\prod\limits_{i=1}\pmod p$。

所以就能得到 $k^{\varphi(p)}\equiv1\pmod p$ 了。

拓展欧拉定理

当 $k>\varphi(p)$ 的时候有 $a^k\equiv a^{k\bmod\varphi(p)+\varphi(p)}\pmod p$。

例题 P4139 P4139 上帝与集合的正确用法

求 $2{2{2^{\dots}}}\bmod p$。

保证 $p$ 是质数。

Solution

直接暴力拓欧,不会递归超过 $\log$ 层。

时间复杂度 $O(\log^2p)$。

中国剩余定理

求一个同余方程组的解集:

$\begin{cases}x\equiv a_1\pmod{m_1}\x\equiv a_2\pmod{m_2}\x\equiv a_3\pmod{m_3}\\dots\x\equiv a_n\pmod{m_n}\end{cases}$

保证 $m_1,m_2,m_3\dots m_n$ 两两互质。

设 $M=\prod\limits_{i=1}^n{m_i},p_i=\frac M{m_i},q_i\equiv p_i^{-1}\pmod{m_i}$,那么就有

$x\equiv\sum\limits_{i=1}^{n}{a_ip_iq_i}\pmod M$

这就是该方程组的解集。

模板题 P1495 【模板】中国剩余定理(CRT)/ 曹冲养猪

练习 P2480 [SDOI2010]古代猪文(需要前置知识 Lucas)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/947169.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

P14321 「ALFR Round 11」D Adjacent Lifting, Fewest Rounds 题解

前言:考场上使用神秘的样例分析法蒙出来了,赛后发现竟然被评了个紫,万恶的良心驱使我写一篇题解。我们先看到操作。任选一个数字使其 \(+2\) 选择两个相邻的数字使其各 \(+1\)要求 使用操作 \(2\) 的次数最小。 换…

详细介绍:【Linux】进程的概念和状态

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Minio外网访问内网上传的预签名url的方法以及报错原因

自己个人的经验总结: 当其他技术配置检查多次都无误,但就是不行的时候,要考虑低级错误的可能: 比如本次 就是 之前 存储桶 的名字改过,但是只改了代码里 获取预签名url的,上传的没有改 导致的结果就是url根本是错的,因…

【ESP32 在线语音】星火大模型

【ESP32接入国产大模型之星火】https://blog.csdn.net/vor234/article/details/140594209

RT-Thread 之互斥量使用

互斥量(Mutex)是 RT-Thread 中用于解决线程间共享资源独占访问的核心 IPC 机制,本文简单介绍了互斥量的API函数和使用示例。一、互斥量概述 互斥量(Mutex)是 RT-Thread 中用于解决线程间共享资源独占访问的核心 I…

20232419 2025-2026-1 《网络与系统攻防技术》实验三实验报告

一、实验内容 1.1 了解恶意软件检测机制,学习免杀原理 1.2 熟悉msfvenom的使用,使用msfvenom中的编码器并尝试生成多种类型的文件 1.3 学习使用veil工具的使用 1.4 尝试进行压缩加壳和加密加壳 1.5 利用C语言shellco…

语义文本理解 BERT - MKT

语义文本理解 BERT 问题 如何区分一个同名的语义名字和物体? A区左边路口的房子 B区右边红绿灯的房子 两个房子含义是不一样的。 从“是什么”升级到“是什么以及在什么情境下”​​,提高了准确性。好的,这个问题…

详细介绍:分布式任务事务框架设计与实现方案

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

FM-Fusion 利用rgbd相机 ram-GroundingDINO-sam 重建语义地图 - MKT

FM-Fusion 利用rgbd相机 ram-GroundingDINO-sam 重建语义地图https://arxiv.org/pdf/2402.04555

AI元人文构想系列:从战略能力到价值对话的文明之路

AI元人文构想系列:从战略能力到价值对话的文明之路引言:超越“鹦鹉”与“黑洞”的AI未来 当前人工智能的发展正站在一个十字路口:一边是精于模仿却回避价值矛盾的“鹦鹉AI”,另一边是潜藏于金融、信息和地缘政治领…

Rig 项目深度分析报告

Rig 项目深度分析报告 基于我对这个项目的深入研究,让我为你详细分析 Rig 这个 Rust LLM 框架。 📋 项目概述 Rig 是由 Playgrounds 开发的开源 Rust 库,专门用于构建可扩展、模块化且符合人体工程学的 LLM 驱动应…

事件日志查看Windows安装软件情况

在事件日志中选择应用程序日志筛选事件来源,事件ID号

RT-Thread之创建线程

使用RT-Thread创建线程的一些代码模板。一、静态线程创建 1、thread_task.c文件 #include "thread_task.h" #include "main.h" #include <stdio.h> #include "rtthread.h"/…

cias_voice_plyer_handle.c 解析

#if VOICE_PLAY_BY_UART /**************** * 播报器参数初始化 * * * * **/ void audio_player_param_init() {outside_init_stream(&mp3_player, &mp3_player_end, IOT_AUDIO_PLAY_BUF_SIZE);if (!mp3_…

VirtualBox共享文件夹完全指南:实现Windows与Ubuntu无缝文件共享

VirtualBox共享文件夹完全指南:实现Windows与Ubuntu无缝文件共享 问题背景 在使用VirtualBox运行Ubuntu虚拟机时,经常需要在宿主机(Windows)和虚拟机(Ubuntu)之间传输文件。虽然可以通过USB设备或网络传输,但设…

凭借Ubuntu和i.MX 6ULL开发板构建网络共享

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

WampServer下载安装教程(附安装包,图文并茂) - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

【CI130x 离在线】FreeRTOS的流缓冲(StreamBuffer)

FreeRTOS StreamBuffer 详解 概述 StreamBuffer(流缓冲区)是 FreeRTOS 提供的一种轻量级数据流传输机制,用于在任务间或中断与任务间高效传输字节流数据。 基本特性 1. 数据结构字节流存储: 以 FIFO 方式存储字节数…

RT-Thread Nano源码浅析

了解RT-Thread Nano源码构成。一、了解源码 从官方下载到RT-Thread Nano源码目录如下图所示1、bsp文件夹 bsp文件夹里面存放的是板级支持包(board support package),用于存放RT-Thread为各种半导体厂商的评估板写好…

《从 “被动听” 到 “主动学”:课堂听讲助力大学生思维成长》

阅读完三篇文章,我首先想到的就是大一到大二的学习状态变化,突然发现上学期的我可能是刚高考完的原因,脑海中还深深印刻着高中生上课必须要认真听讲的烙印。虽然上课给带手机,但是一看到老师走进教室,总是下意识地…