liexi20101117 发表于 2010-12-1 20:59:34

根据小数如何求分数

昨天我的小表弟问我了一个关于一个不知是不是叫循环节的问题,例如1/7化成小数为0.142857142857……中的142857叫一个循环节(6位)。

已知一循环节位数为23的小数的,从小数点后开始的第4位第5位为数字45,第11位第12位第13位为091,循环节最后一位为7,且这个分数的分子中的最后一位数是1,分母中的第一位是9,这个分数如何求解呀?

liexi20101117 发表于 2010-12-2 21:39:46

乍的,题目太简单了吗。
呵呵,可我就是不知思路呀。

kfroger 发表于 2010-12-3 00:05:12

看看~~~~

G-Spider 发表于 2010-12-3 11:04:37

或许用一个分数(有理数)来逼近一个小数,还是有意思的。有时可能有利于分析问题和简化问题。
比如matlab就有这个东东:>> format rat
>> 3.14159265358979323846
ans =
   355/113

>> format rat
>> 0.142857142857
ans =
       1/7

Buffalo 发表于 2010-12-3 11:08:57

本帖最后由 Buffalo 于 2010-12-3 11:10 编辑

方法1:循环小数 0.(abc...xyz)=abc...xyz/999...999,约分即得
方法2:连分数展开,a_0=x,b_n=Int(1/a_n),a_{n+1}=1/a_n-b_n,x=\frac{1}{b_0+\frac{1}{b_1+\frac{1}{b_2+..}}}

showjim 发表于 2010-12-3 11:11:51

设分子不x,分母为y,最大公约数为z,X=(x%y)/z,Y=y/z,A<10^3,B<10^5,C<10^9,则有
X*(10^23 - 1) = Y*(A*10^20 + B*10^13 + C*10 + 45*10^18 + 91*10^10 +7)
X*3*3*11*11*23*4093*8779*21649*513239 = Y*(A*10^20 + B*10^13 + C*10 + 45*10^18 + 91*10^10 +7)
可以看到Y值最多有512种取值,解出所有X与Y,得到基本解。
根据任意一组基本解求实例解:将Y*a=y使第一位是9(a不能是5的倍数),将X+y*b使最后一位数是1。

showjim 发表于 2010-12-3 11:13:28

6# showjim
根据任意一组基本解求实例解:将Y*a=y使第一位是9(a不能是5的倍数,除非X个位为1),将X+y*b使最后一位数是1。

showjim 发表于 2010-12-3 11:17:00

7# showjim
还是错了,应该是
根据任意一组基本解求实例解:求Y*a=y使第一位是9(a不能是5的倍数),求a*(X+y*b)=x使最后一位数是1。

liexi20101117 发表于 2010-12-6 22:48:43

谢谢楼上的几位给我的思路与方法。我会试试的。

manthanein 发表于 2017-1-22 16:28:57

本帖最后由 manthanein 于 2017-1-22 16:31 编辑

循环节有23位?那么分母一定是10^22-1的约数。
10^22-1=3^2*11^2*23*4093*8779*21649*513239
页: [1] 2
查看完整版本: 根据小数如何求分数