首页 > 其他分享 >快速数论变换总结

快速数论变换总结

时间:2025-01-18 20:10:19浏览次数:1  
标签:总结 frac 原根 数论 变换 pmod mathbf aligned equiv

前置

根据快速傅里叶变换,可以在 \(\Theta(n \log n)\) 的时间计算卷积。但是由于用到了复数及三角函数,具有精度误差,且不方便取模。

于是考虑快速傅里叶变换在数论上的实现,避免了精度误差,支持了取模运算。

引入概念原根

定义

由欧拉定理可知,对 \(a\in \mathbf{Z},m\in\mathbf{N}^{*},若 (a,m)=1,则 a^{\varphi(m)}\equiv 1\pmod m\)。

因此满足同余式 \(a^n \equiv 1 \pmod m\) 的最小正整数 \(n\) 存在,这个 \(n\) 称作 \(a\) 模 m 的阶,记作 \(\delta_m(a) 或 \operatorname{ord}_m(a)\)。

性质

\(a,a^2,\cdots,a^{\delta_m(a)}\) 模 \(m\) 两两不同余。

若 \(a^n \equiv 1 \pmod m\),则 \(\delta_m(a)\mid n\)。

原根

定义

设 \(m \in \mathbf{N}^{*},g\in \mathbf{Z}\)。 若 \((g,m)=1\),且 \(\delta_m(g)=\varphi(m)\),则称 \(g\) 为模 \(m\) 的原根。

即 \(g\) 满足
\(\delta_m(g) = \left| \mathbf{Z}_m^* \right| = \varphi(m)\)。当 \(m\) 是质数时,我们有 \(g^i \bmod m,\,0 \lt i \lt m\) 的结果互不相同。

性质

\(g\) 是模 \(p\) 的原根,\(g_n^k=g^{\frac{p-1}{n}k}\)。

指数性

\[\begin{aligned} g_n^k g_n^m &\equiv g^{\frac{p-1}{n}k} g^{\frac{p-1}{n}m} \\ &\equiv g_n^{k+m} \pmod p \end{aligned} \]

周期性

\[\begin{aligned} g_n^{k} &\equiv g_n^{k} \times 1 \\ &\equiv g_n^k g_n^{\varphi(p)} \\ &\equiv g_n^k g_n^{p-1} \\ &\equiv g_n^k g_n^n \\ &\equiv g_n^{n+k} \pmod p \end{aligned} \]

对称性

由阶的性质与:

\[(g_n^{\frac{n}{2}})^2 \equiv g_n^n \equiv 1 \pmod p \]

可得:

\[g_n^{k+\frac{n}{2}} \equiv -g_n^k \pmod p \]

折半性

\[\begin{aligned} g_n^{2k} &\equiv g^{\frac{p-1}{n}2k} \\ &\equiv g^{\frac{p-1}{\frac{n}{2}}} \\ &\equiv g_{\frac{n}{2}}^{k} \pmod p \end{aligned} \]

可以观察到原根与复数在这里是完全等价的,故只需将快速傅里叶变换的复数部分替换为原根即可。

NTT & INTT

void NTT(ll f[],int n,int op)
{
    if(n==1) return;
    ll f1[n/2],f2[n/2];
    for(int i=0;i<n/2;++i)
    {
        f1[i]=f[i<<1],f2[i]=f[i<<1|1];
    }
    NTT(f1,n>>1,op),NTT(f2,n>>1,op);
    ll gk=1,g1=qpow(op==1?g:gi,(p-1)/n);
    for(int i=0;i<n/2;++i)
    {
        f[i]=(f1[i]+gk*f2[i]%p)%p;
        f[i+n/2]=(p+f1[i]-gk*f2[i]%p)%p;
        gk=gk*g1%p;
    }
}

标签:总结,frac,原根,数论,变换,pmod,mathbf,aligned,equiv
From: https://www.cnblogs.com/vanueber/p/18678787

相关文章

  • 2024年云计算平台技术趋势与实践:云平台的使用心得与总结实践思考
    博客之星2024年度总评选:随着云计算技术的持续发展,国内某里云和某讯云这两大平台在国内外的影响力逐步扩大,成为许多企业和开发者的首选云服务提供商。2024年,我们见证了这两大平台在产品创新、技术服务及市场拓展等方面的诸多亮点。从个人的使用体验和技术总结出发,我想分享一下......
  • 庄小焱——2024年博文总结与展望
    摘要大家好,我是庄小焱。岁末回首,2024年是我在个人成长、博客创作以及生活平衡方面收获颇丰的一年。这一年的经历如同璀璨星辰,照亮了我前行的道路,也为未来的发展奠定了坚实基础。1.个人成长与突破在2024年,我在技术领域实现了重大的成长与突破,尤其是在后端开发方面。这......
  • CMU 15-445 23Fall总结
    注:编译、测试之前运行sudosysctlvm.mmap_rnd_bits=28BusTub'sarchitecture:1.QueryProcessing(查询处理层)负责将输入的SQL查询转化为可执行的物理查询计划。Parser(解析器):将输入的SQL字符串解析为抽象语法树(AST),检查SQL语法是否合法。Binder(绑定器):对AST进......
  • Linux常用命令总结
    Linux常用命令指南文章目录Linux常用命令指南1.文件与目录操作命令(1)ls-列出目录内容(2)cd-改变当前工作目录(3)pwd-显示当前目录(4)mkdir-创建新目录(5)rmdir-删除空目录(6)rm-删除文件或目录(7)mv-移动或重命名文件(8)cp-复制文件或目录2......
  • STM32单片机的学习总结
    从计算机基础、寄存器知识、汇编指令、中断以及各外设驱动的开发,单片机底层经过这段时间的学习做一个总结。计算机组成计算机由输入设备、输出设备、控制器、运算器、存储器组成,存储器分为外部存储器、内部存储器、高速缓存、寄存器,在单片机底层开发中,主要使用寄存器对某一地......
  • #CSS 实用属性总结
    文章目录防脱发神器颜色的Alpha通道尺寸的百分比最大最小宽高伪类选择器`contenteditable`属性`table`元素CSS中的大小/长度单位绝对单位相对单位与字体大小相关与视窗大小相关百分比单位动态计算单位时间单位角度单位分辨率单位使用建议防脱发神器为了更直观......
  • 使用libwebsocket技术总结
    一、编译libwebsocket1)需要使用Cmake工具,将根目录下CMakeLists.txt打开后,需要配置openssl库的路径2)当前libwebsocketv3.2版本需要使用opensslv1.1.x以上版本,否则ssl安全协议支持只能选择内置ssl模块,一般都选择openssl库作为ssl加密库。3)Openssl库的版本问题当前终......
  • 日期时间格式化:DateTimeFormatter (全面总结和详细拆解)
    前言:小编吃了点药药,终于流感要好啦(嘻嘻)我们继续日更吧!!!我们一直都是以这样的形式,让新手小白轻松理解复杂晦涩的概念,把Java代码拆解的清清楚楚,每一步都知道他是怎么来的,为什么用这串代码关键字,对比同类型的代码,让大家真正看完以后融会贯通,举一反三,实践应用!!!!①官方定义......
  • 嵌入式知识点总结(一)-C/C++关键字
     针对于嵌入式软件杂乱的知识点总结起来,提供给读者学习复习对下述内容的强化。目录1.C语言宏中"#“和"##"的用法1.1.(#)字符串化操作符1.2.(##)符号连接操作符2.关键字volatile有什么含意?并举出三个不同的例子?2.1.并行设备的硬件寄存器2.2.中断服务程序中修改的变......
  • 1.17学习总结
    排序a.桶排序  b.快速排序  算法分析   洛谷作业题×1数据结构:复习了结构体,指针,typedef ......