以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 计算机考研交流 』   (http://bbs.xml.org.cn/list.asp?boardid=67)
----  如何用鸽巢原理证明有理数是循环小数,即一定能够在某一位之后小数开始循环  (http://bbs.xml.org.cn/dispbbs.asp?boardid=67&rootid=&id=55094)


--  作者:wu5zg
--  发布时间:11/9/2007 10:06:00 AM

--  如何用鸽巢原理证明有理数是循环小数,即一定能够在某一位之后小数开始循环
如何用鸽巢原理证明有理数是循环小数,即一定能够在某一位之后小数开始循环
--  作者:Logician
--  发布时间:11/9/2007 2:27:00 PM

--  
考虑除法的计算方式:对整数A和B,在计算A/B时,如果A不能整除B,那么之后需要在A除以B的余数后添0,然后继续除。注意,此时,每一轮试除产生的商和余数都是由上一轮试除的余数唯一确定的。只要之后出现了两次相同的余数,那么他们就确定了一个周期,也即一个循环节。而余数的取值只能是0到B-1之间的整数,由鸽巢原理,至多做B+1次“添零试除”,就必然会出现循环节。
由此可以有一个有意思的推论:A/B的循环节长度不可能超过B
--  作者:zgwu
--  发布时间:11/9/2007 3:44:00 PM

--  
感谢
--  作者:zgwu
--  发布时间:11/9/2007 4:40:00 PM

--  
谢谢解答,这类题开始的时候还真是没有思路

可是我咋觉得是从第一次填零试除开始,应该是最多b-1次
A/B
其中t为整数部分,t1,t2依次为小数由高到低位
C C1 C2... 的取值只有b-1种
所以最多C C1 C2 ... C(b-1) 共有b个余数,就会出现重复,这里应该是做了b-1次填零试除。

A=t*B+C
C*10=t1*B+C1 1次
C1*10=t2*B+C2 2次
.
.
.


--  作者:Logician
--  发布时间:11/9/2007 4:59:00 PM

--  
嗯。对。
如果余数是0就不用再做了……
不过由于有B-1种可能,那么根据鸽巢原理要做B次才能保证有重复吧……
这样可以推出循环节最长为B-1
--  作者:zgwu
--  发布时间:11/9/2007 5:12:00 PM

--  
是,循环节为b-1。
不过,最后一次只要得到余数就可以了,检查一下是不是有重复,要是重复的话应该就不要再填零试除了;第一次得到余数C 的时候,不用填零试除,而是A除以B得的;而得到余数C1---C(b-1)都要填零试除;此时已经能得到b个余数,而填零试除的次数应该有b-1次,和余数C(i)一一对应。每次填零试除得到一个余数C(i).
--  作者:Logician
--  发布时间:11/9/2007 5:26:00 PM

--  
嗯。对。
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
46.875ms