分圆多项式
分圆多项式
记wn表示一个n次本原单位根(即w1n,…,wn−1n≠1且wnn=1)。那么w1n,w1n,…,wn−1n,wnn是xn−1的n个根。因此有:
xn−1=n∏i=1(x−win)定义分圆多项式为Φn(x)=∏ni=1(x−win)[gcd(i,n)=1]。即根恰好为所有n次本原根的多项式。
由定义可以发现:
∏d|nΦd(x)=xn−1我们可以用莫比乌斯反演推出:
∑d|nlnΦd(x)=ln(xn−1)⇒lnΦn(x)=∑d|nμ(n/d)ln(xd−1)⇒Φn(x)=∏d|n(xd−1)μ(n/d)我们也可以通过递推的方式计算Φn(x),直接通过(xn−1)/∏d|n∧d<nΦd(x)来得到,其中Φ1(x)=x−1。
分圆多项式的特性如下:
- 分圆多项式都是首一整系数多项式
- 分圆多项式在整数环Z上是不可约的
- 在modΦn(x)意义下,x的阶正好为n。
题目1:计算Φn(x)。
可以考虑两种做法,一种是通过Φn(x)=(xn−1)/∏d|n∧d<nΦd(x)来得到。这种做法的时间复杂度为O(∑d|nd2),同时它还能对于任意t|n,找到Φt(x)。
还有一种方法是通过Φn(x)=∏d|n(xd−1)μ(n/d)得到,利用一些技术,我们可以得到O(nlog2n)的时间复杂度的算法。
题目2:对xn−1做因式分解,将其分解为f1×f2×⋯×fk的形式,且fi是不可约整系数多项式。
提供一道题目。
根据下面公式找到所有分圆多项式,之后输出即可。
∏d|nΦn(d)=xn−1