接下来几节要讨论循环节的长度。当然,这些内容在数学上已经有了明确的结论,但是本帖的主旨并非简单告诉读者们一些结论,而是希望通过对一些问题抽丝剥茧式的分析求解,展示一些数学思想和常用的方法。
因此,假如读者已经了解了一些循环节长度方面的结论,请暂时忘记它;如果读完本节之后,有一些更好的想法,也欢迎提出来大家一起讨论。
现在就从最简单的情形开始研究。假设有一个素数p,我们考虑它的倒数1/p,用长除法可以求得对应的小数形式。这个小数将具有什么样的形式呢?它是纯循环小数还是混循环小数?它的循环节长度取决于什么条件?
我们前面已经知道,如果p为2或者5,那么1/p可以写成有限小数(就是0.5和0.2)。如果p是其它素数呢?
写到这里读者可能要问,为什么要假定p是素数呢?按照我们之前的思路,我们希望先研究最简单的情形。根据素数的定义,一个素数不能再分解为两个其它非1的正整数的乘积,而合数则总是可以分解为一些素数的乘积。这意味着在考虑乘除法性质的时候,素数也许比较简单或者基本(当然不一定如此;如果碰到困难我们再另寻出路)。
所谓循环节,就是会重复出现的数字模式。读者可能有印象,在做长除法的时候,如果在某一阶段出现了前面已经出现过的余数,那么后面的余数和商也会跟着重复出现。最简单的例子是1/3,做长除法的时候,每次都是得到一个余数1,因此构成循环。读者不妨试着做一下看看。下面要把这个规律用数学语言写出来。
为了更直观地观察到其中的规律,我们可以把长除法改写成一系列的等式:
1 = p * 0 + r_0 (r_0 = 1)
10 * r_0 = p * q_1 + r_1
........
10 * r_n = p * q_{n+1} + r_{n+1}
........
这样,对应的小数就是0.{q_1}{q_2}...{q_n}...,而r_i就是第i次得到的余数。按照长除法,我们把它乘以10再继续试商。易见,0 < r_i < p,并且r_i与p互素。
如果长除法里面得到的余数发生重复,即是说,对于两个下标i和j(这里不妨假设i < j)如果r_i = r_j,后面的商和余数会怎么样呢?根据上面的展开式,我们就有:
10 * r_i = p * q_{i+1} + r_{i+1}
10 * r_j = p * q_{j+1} + r_{j+1}
在r_i = r_j的前提下,容易证明,q_{i+1} = q_{j+1},以及r_{i+1} = r_{j+1}。(证明留给读者作为练习。
)
这就是说,如果长除法中余数重复出现,那么所得小数也会出现循环。这是一个平凡的结果,接下来要解决一个问题,即在余数形成的序列中,r_0是不是第一个重复出现的,或者说,1/p是不是一个纯循环小数。(待续)
[
本帖最后由 火车是运茶的 于 2008-9-5 23:05 编辑 ].