前言
由于解决这个问题的做法完全是我个人主观完成的,因此可能会存在很严重的错误,如果发现任何的问题与错误请在评论区进行提出指正。还有这个问题在数论中应该有个专业的名词,如果有人知道的话也麻烦在评论区留言告知。
正文
本文尝试解决的问题为:对于 ∀x∈Z 多项式方程 f(x)=n∑i=0ai⋅xi 在模 m 意义下所对应的剩余系中,寻找一个非最小的余数循环周期 T 使得
n∑i=0ai⋅(x+T)i≡n∑i=0ai⋅xi(modm)
为什么是非最小呢?其实直接取 T=m 就满足上面那个同余方程了。实际上如果要求最小的 T 会涉及到高次同余式的求解,我现在还不会qwq。所以就退而求次,求一个尽可能最小的周期 T,同样可以满足 f(x+T)≡f(x)(modm)。
比如要找到一个最小的 T 满足高次同余式 n∑i=0ai⋅Ti≡0(modm)。正规解法的话我还没学,这里只是记录我想到能得到尽可能小的 T 的做法。就是让每一项的 T 都满足 ai⋅Ti≡0(modm),然后对 n 组方程的 T 取最小公倍数。
为了方便理解,我们先从数据规模较小的 n 开始模拟,然后再推到更一般的情况。
当 n=1,此时 f(x)=a0+a1⋅x,对于 ∀x∈Z 有
f(x+T)=a0+a1⋅(x+T)(modm)≡a0+a1⋅x+a1⋅T(modm)≡f(x)+a1⋅T(modm)
为了使得 f(x+T)≡f(x)(modm),很明显我们应该让 a1⋅T≡0(modm)。
即有 m∣a1⋅T,等价于 mgcd(m,a1) ∣∣∣ T。
这意味着 T 应该是 mgcd(m,a1) 的倍数,因此可以令 T=mgcd(m,a1)。
当 n=2,此时 f(x)=a0+a1⋅x+a2⋅x2,对于 ∀x∈Z 有
f(x+T)=a0+a1⋅(x+T)+a2⋅(x+T)2(modm)≡a0+a1⋅x+a2⋅x2+(2⋅a2⋅x+a1)⋅T+a2⋅T2(modm)≡f(x)+(2⋅a2⋅x+a1)⋅T+a2⋅T2(modm)
此时应该让 (2⋅a2⋅x+a1)⋅T+a2⋅T2≡0(modm)。
注意到由于是对于 ∀x∈Z 上面的同余方程都要成立,因此我们在求解 T 时不应该考虑 x 的取值,即可以把 x 从中去除,因此要求解的同余方程就变成了 (2⋅a2⋅x+a1)⋅T+a2⋅T2≡0(modm)。
令
{(2⋅a2⋅x+a1)⋅T≡0(modm)a2⋅T2≡0(modm)
即
{m∣(2⋅a2⋅x+a1)⋅Tm∣a2⋅T2
即
⎧⎪
⎪⎨⎪
⎪⎩mgcd(m,2⋅a2⋅x+a1)∣∣Tmgcd(m,a2)∣∣T2
我们当然可以直接令 T=lcm[mgcd(m,2⋅a2⋅x+a1), mgcd(m,a2)],但为了使得 T 尽可能的小,对 mgcd(m,a2) 进行质因数分解,得到
mgcd(m,a2)=Pα2,12,1⋅Pα2,22,2⋯Pα2,k22,k2
可以发现,对于 mgcd(m,a2)∣∣T2 的情况,当 T=P⌈α2,12⌉2,1⋅P⌈α2,22⌉2,2⋯P⌈α2,k22⌉2,k2,可以取到满足条件的最小的 T。
为了统一起来,对于 mgcd(m,2⋅a2⋅x+a1)∣∣T 的情况,先对 mgcd(m,2⋅a2⋅x+a1) 进行质因数分解,得到
mgcd(m,2⋅a2⋅x+a1)=Pα1,11,1⋅Pα1,21,2⋯Pα1,k11,k1
此时令 T=P⌈α1,11⌉1,1⋅P⌈α1,21⌉1,2⋯P⌈α1,k11⌉1,k1,就等价于 T=mgcd(m,2⋅a2⋅x+a1)。
然后对两者取最小公倍数,就有
T=lcm⎡⎢⎣P⌈α1,11⌉1,1⋅P⌈α1,21⌉1,2⋯P⌈α1,k11⌉1,k1 , P⌈α2,12⌉2,1⋅P⌈α2,22⌉2,2⋯P⌈α2,k22⌉2,k2⎤⎥⎦
这时可以考虑更加一般的情况了。
先对式子 n∑i=0ai⋅(x+T)i 进行等价变形:
n∑i=0ai⋅(x+T)i=a0+a1⋅(x+T)+a2⋅(x+T)2+⋯+ai⋅(x+T)i+⋯+an⋅(x+T)n=a0+a1⋅1∑j=0Cj1⋅x1−j⋅Tj+a2⋅2∑j=0Cj2⋅x2−j⋅Tj+⋯+ai⋅i∑j=0Cji⋅xi−j⋅Tj+⋯+an⋅n∑j=0Cjn⋅xn−j⋅Tj=(a0+a1⋅x+a2⋅x2+⋯+ai⋅xi+⋯+an⋅xn) +(a1⋅1∑j=1Cj1⋅x1−j⋅Tj+a2⋅2∑j=1Cj2⋅x2−j⋅Tj+⋯+ai⋅i∑j=1Cji⋅xi−j⋅Tj+⋯+an⋅n∑j=1Cjn⋅xn−j⋅Tj)=n∑i=0ai⋅xi+n∑i=1(ai⋅i∑j=1Cji⋅xi−j⋅Tj)
即在模 m 意义下要使得
n∑i=0ai⋅(x+T)i=n∑i=0ai⋅xi+n∑i=1(ai⋅i∑j=1Cji⋅xi−j⋅Tj)≡n∑i=0ai⋅xi(modm)
即对于任意的 ∀x∈Z,要求 T 使得
n∑i=1(ai⋅i∑j=1Cji⋅Tj)≡0(modm)
对上式进行等价变形就会得到
n∑j=1(n∑i=jCji⋅ai)⋅Tj≡0(modm)
每一项在模 m 意义下余 0,得到
⎧⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪⎨⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪
⎪⎩mgcd(m, n∑i=1C1i⋅ai) ∣∣
∣
∣
∣∣ Tmgcd(m, n∑i=2C2i⋅ai) ∣∣
∣
∣
∣∣ T2 ⋮mgcd(m, n∑i=jCji⋅ai) ∣∣
∣
∣
∣
∣∣ Tj ⋮mgcd(m, n∑i=nCni⋅ai) ∣∣
∣
∣
∣∣ Tn
对每一项的除数进行质因数分解,得到
mgcd(m, n∑i=jCji⋅ai)=kj∑i=1Pαj,ij,i
那么要求的 T 就是
T=lcm1≤j≤n⎡⎣kj∑i=1P⌈αj,ij⌉j,i⎤⎦
以上。
感觉很笨是吧,明明有正解(解高次同余式)了,上面的方法不仅复杂,甚至都不是求出余数循环的最小周期 T。这篇记录就当作图一乐吧,毕竟很少有机会取思考数学问题。
当然还有多项式真假分式的情况,这个就太难了没什么思路。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效
2022-03-14 修改数组
2022-03-14 垒骰子
2021-03-14 一元多项式的乘法与加法运算