目录 · N17 从单位根到 NTT
学习手册/密码学与安全/数学基础
N17密码学与安全 · 数学基础6 分钟更新于 2026-08-21

从单位根到 NTT

解释有限域单位根如何支撑数论变换,并建立数论知识与多项式快速计算之间的连接。

关键词单位根 · NTT · FFT · 多项式

建议先了解

  • 乘法群、生成元与单位根
  • 多项式的基本概念

1. 这篇笔记只建立连接

前面的数论知识最终会进入多项式求值、卷积、密码学和零知识证明。数论变换(Number Theoretic Transform,NTT)可以理解为“在有限域中运行的离散傅里叶变换”。

这一篇先回答三个问题:

  1. NTT 为什么需要单位根;
  2. 有限域参数必须满足什么条件;
  3. 数论学习路线怎样连接到快速多项式计算。

完整的正变换、逆变换和蝶形算法会继续拆成单独 Note。


2. 从多项式系数到点值

设多项式

f(x)=a0+a1x++an1xn1.f(x)=a_0+a_1x+\cdots+a_{n-1}x^{n-1}.

NTT 选择一组有限域中的点

1,ω,ω2,,ωn1,1,\omega,\omega^2,\dots,\omega^{n-1},

并计算

Fk=f(ωk),qquadk=0,1,,n1.F_k=f(\omega^k),qquad k=0,1,\dots,n-1.

ω\omega 必须是原始 nn 次单位根,也就是

ωn=1\omega^n=1

且对 0<d<n0<d<n

ωd1.\omega^d\neq1.

这样这些求值点才互不重复,并具有可用于分治的周期结构。


3. 为什么单位根能够支持分治

nn 为偶数时,可以把多项式按偶数次幂和奇数次幂拆开:

f(x)=feven(x2)+xfodd(x2).f(x)=f_{\text{even}}(x^2)+x f_{\text{odd}}(x^2).

在单位根点上求值时,ω2k\omega^{2k} 会落入规模减半的单位根集合。于是一个长度为 nn 的问题可以递归变成两个长度为 n/2n/2 的问题。

这正是 FFT 和 NTT 获得

O(nlogn)O(n\log n)

复杂度的核心结构,而不是简单地“把模运算写进 FFT”。


4. 有限域参数条件

如果在素域 Fp\mathbb F_p 中进行长度为 nn 的 NTT,需要存在原始 nn 次单位根。由于

Fp=p1,|\mathbb F_p^*|=p-1,

典型条件是

n(p1).n\mid(p-1).

ggFp\mathbb F_p^* 的生成元,可以构造

ω=g(p1)/n.\omega=g^{(p-1)/n}.

工程中经常选择

n=2kn=2^k

并让 2k2^k 整除 p1p-1,这样可以反复二分。


5. 一个小参数例子

F17\mathbb F_{17} 中,乘法群阶为

171=16.17-1=16.

因此可以支持长度为 2、4、8 或 16 的单位根结构。上一篇构造了原始 4 次单位根

ω=13.\omega=13.

长度 4 的求值点为

1,13,132,133(mod17),1,13,13^2,13^3\pmod{17},

1,13,16,4.1,13,16,4.

这些点互不相同,并满足 ω4=1\omega^4=1


6. NTT 与复数 FFT 的区别

对比项复数 FFTNTT
运算环境通常为复数有限域或模运算结构
单位根复数单位圆上的根有限域乘法群中的根
数值误差浮点实现可能有舍入误差模运算是精确的
参数限制取决于实现与长度模数必须提供所需阶的单位根

NTT 没有浮点舍入误差,但会受到模数和变换长度的代数条件约束。


7. 整条知识链

整除
  ↓ 定义互质
最大公约数与 Bézout 等式
  ↓ 判断并构造逆元
同余与模逆元
  ↓ 模质数时非零元素都可逆
有限域 F_p
  ↓ 去掉 0 后形成循环乘法群
生成元与元素的阶
  ↓ 构造原始单位根
单位根
  ↓ 提供递归求值点
NTT

每一箭头都表示一个依赖关系。缺少前一层条件,不能直接套用后一层公式。


8. 当前尚未展开的内容

后续应继续拆分为独立 Note:

  • NTT 正变换的定义与手算例子;
  • 逆 NTT 为什么需要 n1n^{-1}
  • 蝶形运算与位逆序;
  • 使用 NTT 计算多项式卷积;
  • 常见 NTT 友好质数;
  • NTT 在零知识证明多项式运算中的位置。

9. 自测

  1. NTT 为什么要求原始 nn 次单位根?
  2. Fp\mathbb F_p 中,为什么通常要求 n(p1)n\mid(p-1)
  3. 为什么工程中常选择 n=2kn=2^k
  4. NTT 与复数 FFT 的一个关键区别是什么?
参考答案
  1. 它提供 nn 个互不重复且具有周期结构的求值点。
  2. Fp\mathbb F_p^* 的阶为 p1p-1,阶为 nn 的元素必须与群阶相容。
  3. 长度为二的幂时可以反复二分,适合蝶形递归。
  4. NTT 在有限域中精确计算,但参数必须满足单位根存在条件。

上一篇:乘法群、生成元与单位根
返回:数论学习路线