分享

寻找更多神奇数字的方法 (续二)

 oliverchenbing 2013-02-16

我们假设n为素数,并且1/n的结果可以表达为一个从小数点之后开始的周期为(n-1)的无限循环小数。

现在我们来证明:这一循环往复出现的(n-1)位数字,一定是一个神奇数字。

让我们明确,一个(n-1)位的神奇数字M,应该具备以下两个特征:

1, M * n = 10^(n-1) - 1
2, 如果 M 可以表达为 {a1, a2, a3, ..., a(n-1)},
   那么对于每一个正整数i,(1<=i<=n-1)
   i * M 都是由 (a1, a2, a3, ..., a(n-1)) 构成的。


我们先来证明第一条:

首先:

(1) 1/n 可以表达为:0.a1 a2 a3 a4 ... a(n-1) a(n) a(n+1) ...
(2) 10^(n-1) * 1/n 也就是:a1 a2 a3 a4 ... a(n-1).a(n) a(n+1) ...

由于1/n是一个从小数点后之开始的周期为(n-1)的无限循环小数,我们可以认定:
{a1, a2, ..., a(n-1), ...} = {a(n), a(n+1), ..., a(2n-2), ...}

(1)与(2) 两者相减,得到:
{a1, a2, a3, .. a(n-1)} = [10^(n-1) - 1] / n

这就满足了神奇数字的第一条特征。


再来证明第二条:

同样地,将 1/n 表达为:0.a1 a2 a3 a4 ... a(n-1) a(n) a(n+1) ...
考虑将1/n的小数点向后移动k个位置,所得新数的小数部分可以表达为:
X(k) = [1/n * 10^k - {a1, a2, ..., ak} ]  (1<=k<=n-1)
显然 0 < X(k) < 1, 而且对于任意一对(k0,k1),只要k0 <> k1,X(k0) <> X(k1)。
(注:否则和上述周期为(n-1)的无限循环小数相矛盾。)

设 d(k) = X(k) * n = 10^k - {a1, a2, .., ak} * n
显然,d(k) 是正整数。
让我们换一种写法:
X(k) = d(k) * 1/n
显然,将1/n的小数点向后移动k个位置,所得新数的小数部分应该是1/n的整数倍,d(k)正是这个倍数。

还是由于 d(k) = X(k) * n,0 < X(k) < 1,而且对于任意一对(k0, k1),只要k0 <> k1,则X(k0) <> X(k1),
因而 0< d(k) < n,而且对于任意一对(k0, k1),只要k0 <> k1,则d(k0) <> d(k1)。
由于1<= k<= n-1, 这意味着,d(1), d(2), ..., d(n-1) 与 1, 2, ..., n-1 一一对应。
因而我们可以建立d(k)的反函数:d'(k)
显然,d'(1), d'(2), ..., d'(n-1) 与 1, 2, ..., n-1 也是一一对应的。

由于X(k)是由1/n的小数点向后移动k个位置后所得到的小数部分,
显然,X(k)也是一个从小数点之后开始的周期为(n-1)的无限循环小数。
现在令 M(k) = X(k) * 10^(n-1) - X(k) = X(k) * (10^(n-1) -1)
M(k)所得到的是X(k)从小数点后开始的那(n-1)位数字。
它和M的区别只是将M开头的(k-1)位移至M的右边,在数字组成方面并没有区别。

对于每一个正整数i,(1<=i<=n-1),我们都可找到唯一的一个k=d'(i),也就是d(k) = i,
M(k) = X(k) * (10^(n-1) -1) = d(k) * 1/n * (10^(n-1) -1)
由于 d(k) = i,M = 1/n * (10^(n-1) -1)
则 M(k) = i * M
M(k),也就是 i * M,在数字组成方面与M并没有区别。
只需要将神奇数字M开头的(k-1)位(即(d'(i)-1)位)移至神奇数字的右边,这样所得到的新数便是原来M的i倍。

自然第二条也满足了。

至于上述d(k)函数的取值,可以通过下面的方法计算得到:
由于 d(k) = X(k) * n = 10^k - {a1, a2, .., ak} * n,0< d(k) < n,
两边对 n 取余数,得到:
d(k) = d(k) mod n = 10^k mod n
有了d(k),自然其反函数d'(k)也就能得出了。


据此,我们找到产生神奇数字的又一种方法,那就是:

如果素数n,其1/n的结果可以表达为一个从小数点之后开始的周期为(n-1)的无限循环小数,
那么这一循环往复出现的(n-1)位数字,一定是一个神奇数字。


=======================================================================
附加证明
 
若n为素数,且n<>2, n<>5,那么对于1/n来说,从小数点之后便开始出现循环,
其循环周期必然小于n。
 
证明:
 
1/n 可以表达为:0.a1 a2 a3 ... a(n-1) a(n) a(n+1) ...
令 X(k) = 1/n * 10^k - {0, a1, a2, ..., ak}    (0<=k) 
   X(0) = 1/n * 10^0 = 1/n
   X(1) = 1/n * 10^1 - {a1}
   ...
可见 X(k)就是将1/n的小数点向后移动k位后所得新数的小数部分。
令 d(k) = X(k) * n = 10^k - {0, a1, a2, ..., ak} * n   (0<=k)
则 d(k) = 10^k (mod n)
 
显然 d(i)为正整数,且 d(i) < n
另外由于 (10,n) = 1,所以 d(i) <> 0 (i>=0)
因而:1 <= d(i) <= n-1 (i>=0)
 
考察 d(0), d(1), d(2), ..., d(n-1) 这一数列,
由于这n个整数的取值范围在1和(n-1)之间,
因而,必定存在一对(k1,k2),0<=k1<k2<=n-1,使得d(k1)=d(k2)。
也即是说,10^k1=10^k2 (mod n)
由于(10^k1, n)=1
这样便可推断 10^0 = 10^(k2-k1) (mod n)
即:d(0) = d(k2-k1) (mod n)
由于1 <= d(i) <= n-1 (i>=0)
因而 d(0) = d(k2-k1) 
 
由于 0<=k0<k1<=n-1,
令 k0 = k2-k1,
则 d(0) = d(k0)  (0<k0<=n-1)
 
由于 X(k) = d(k) / n,
因而,X(0) = X(k0),
 
X(0)  可以表达为:0.a1 a2 a3 ...a(k0-1) a(k0) a(k0+1) ... a(n-1) a(n) a(n+1) ...
X(k0) 可以表达为:0.a(k0+1) a(k0+2) ... a(n-1) a(n) a(n+1) ...
显然,从小数点之后便开始有“a1 a2 ... a(k0)”这k0位数字的循环出现,
而且由于0<k0<=n-1,因而对于1/n来说,其循环周期必然小于n。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多