关于Serge Lang《本科代数》中d进制数表示存在性与唯一性的证明疑问
嗨,我来帮你梳理下你的证明思路,再讲讲唯一性部分的做法~
首先说存在性证明:你的核心思路是对的,但归纳的表述可以更严谨一些,避免模糊性。咱们换个更清晰的归纳逻辑,以正整数(n)的大小作为归纳对象:
- 归纳基础:当( n < d )时,直接取( c_0 = n ),( k=0 ),这显然满足( 0 \leq c_0 < d ),就是我们要的表示。
- 归纳步骤:假设对于所有小于( n )的正整数,都存在符合要求的d进制表示。现在对( n )应用欧几里得算法,得到( n = qd + c_0 ),其中( 0 \leq c_0 < d )。因为( d > 1 ),所以( q = \frac{n - c_0}{d} < n )(毕竟( n - c_0 \leq n ),除以大于1的数肯定比n小)。根据归纳假设,( q )可以写成( q = c_1 + c_2d + \dots + c_kd^{k-1} ),其中每个( 0 \leq c_i < d )。把这个代入( n = qd + c_0 ),就得到:
[
n = c_0 + c_1d + c_2d^2 + \dots + c_kd^k
]
完全符合题目要求的形式。
你原来的证明里用(k)作为归纳对象,其实有点绕,因为(k)是表示的位数,不如直接对(n)的大小归纳更自然——毕竟(q)必然比(n)小,递推关系很明确,逻辑也更扎实。不过你的核心想法(欧几里得算法+归纳)是没问题的。
接下来是唯一性证明,按照题目的提示,咱们用归纳法一步步来:
假设( n )有两种符合要求的表示:
[
n = c_0 + c_1d + \dots + c_kd^k = c_0' + c_1'd + \dots + c_md^m
]
第一步,先看两边模(d)的结果:左边模(d)等于( c_0 )(因为所有(d)的倍数项模(d)都是0),右边模(d)等于( c_0' )。所以( c_0 \equiv c_0' \pmod{d} )。又因为( 0 \leq c_0, c_0' < d ),两个在0到(d-1)之间的数模(d)相等,只能是( c_0 = c_0' )。
然后把两边都减去( c_0 ),得到:
[
d(c_1 + c_2d + \dots + c_kd^{k-1}) = d(c_1' + c_2'd + \dots + c_md^{m-1})
]
因为( d > 1 ),不等于0,所以可以两边同时除以(d),得到:
[
q = c_1 + c_2d + \dots + c_kd^{k-1} = c_1' + c_2'd + \dots + c_md^{m-1}
]
这里的(q)是小于(n)的正整数(如果(n=c_0)的话,(q=0),这时候表示就是唯一的(c_0))。根据归纳假设,所有小于(n)的数的d进制表示都是唯一的,所以(q)的这两个表示必须完全一致:不仅对应的系数( c_1 = c_1', c_2 = c_2', \dots ),而且表示的位数(k)和(m)也必须相等。
这样一步步递推下去,就证明了所有的系数( c_i )都是唯一确定的。
备注:内容来源于stack exchange,提问作者user853401

