找回密码
 欢迎注册
查看: 20404|回复: 5

[提问] a/b=c问怎么确定这个循环小数c的循环节长度?

[复制链接]
发表于 2009-11-2 23:08:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?欢迎注册

×
一个数除以另一个数,得到一个商. 这个商可能是个循环小数除不尽. a/b=c问怎么确定这个循环小数c的循环节长度?

  例如?  a/b=c,  假设 a=125456, b=23654845742315 , 求c, 已知c肯定是个循环小数?  但不知道c的循环节长度,  怎么根据 a,b的关系知道c的循环节大小呢?  有没有什么简单办法来计算知道循环节大小? 我编程寻找循环节长度,往往循环节都长达一万亿位以上,绝大部分程序都难以寻找.
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2009-11-3 07:36:02 | 显示全部楼层
既然是提问,就不要把主题设成收费的(我已经把收费解除了)。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2009-11-3 07:45:59 | 显示全部楼层
关于这个问题,本论坛早有研究,见下:

还有,我专门开发了分数转小数快速计算器,可以迅速计算出任意分子分母均小于2^32的分数转化成小数时的循环节长度,并可快速精确输出出来,你可以去参考一下,它集成在HugeCalc套装软件中,下载请点击这里
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2009-11-3 09:09:24 | 显示全部楼层
如果仅仅a/b计算循环节长度,流程如下:
  • 将a/b简化成最简分数;
  • 将分母中含有2或5的因子剔除;
  • 计算分母关于10的“指数”,可以先计算出分母的欧拉函数,然后试除其因子,计算出使其关于10的模幂等于1的最小指数即为所求。可参见:Multiplicative Order
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2009-11-3 18:17:49 | 显示全部楼层
   你们这个论坛弄的不是很好, 发贴点出一个小窗口后(在小窗口里发不了贴),  必须要点大窗口才能发的上来.   而且里面的很多设置繁琐.  有些都是无效的失灵的.  实际上我就根本没点收费,我都不知道收费是怎么出来的


下面是一个网友发表的回复:

首先a/b要约分成互质,为m/n,那么m/n与1/n循环节一样。
把n中的2和5的因式全部去掉,这样不影响循环节长度,剩下的因式记为n1。
根据循环小数化为分数的方法,分母必然是99…9(k个9)=10^k-1,并且n1必然整除10^k-1,这样问题就转化为求满足10^k≡1 (mod n1)的最小正整数k。


首先要说欧拉函数φ(n):欧拉函数是一个定义在正整数上的函数,φ(n)的值等于以下这些整数0、1、2、…、n-1与n互素的数的个数。
由定义知,φ(1)=1,φ(2)=1,φ(3)=2,φ(4)=2,……,当p是素数时,φ(p)=p-1。
欧拉函数的计算方法:设n的标准分解式子是p1^k1·p2^k2·…·pm^km,其中p1、p2、…、pm是互不相等的素数,k1、k2、…、km都是正整数,则φ(n)=n(1-1/p1)(1-1/p2)…(1-1/pm)。
例如φ(10)=10×(1-1/2)×(1-1/5)=4。
欧拉定理:设a、m为整数,m>1,(a,m)=1,则a^φ(m)≡1 (mod m)。
整数的次数:a、m为整数,m>1,(a,m)=1,k是使a^k≡1 (mod m)成立的最小正整数,则k叫做a对模m的次数。
次数定理:设a对模m的次数为k,n是满足a^n≡1 (mod m)的正整数,则k|n。
欧拉函数的计算方法、欧拉定理的证明、次数定理的证明可以找初等数论的书,这里就不发上来了。

由欧拉定理可以得到求1/n循环节长度的方法。
举个简单的例子。
例如n=11,则φ(11)=10,根据欧拉定理10^10≡1 (mod 11),所以循环节长度一定是10的正约数。而10的正约数有1、2、5、10,从小到大逐一检验,得到10^2≡1 (mod 11),所以1/11的循环节长度就是2。


假设a、n是大于1的正整数,p是素数,则a对模p的次数没有什么好办法去求,只能用上面的方法。
其它情形有下面两个定理:
假设a、n是大于1的正整数,n的标准分解式是p1^k1·p2^k2·…·pt^kt,其中p1、p2、…、pt是互不相等的素数,k1、k2、…、kt都是正整数,a对模pi^ki的次数为mi,则a对模n的次数为m1、m2、…、mt的最小公倍数。
如果a、n是大于1的正整数,p是素数,k是正整数,a对模p^k的次数是m,则a对模p^(k+1)的次数是m或pm。
这两个定理也可以从初等数论里找到证明,我也不发上来了。

再举一个例子
539=7^2×11
10对模7的次数为6,那么10对模7^2的次数或者是6或者是42,经计算验证得10对模7^2的次数是42。
10对模11的次数为2。
所以10对模539的次数为2和42的最小公倍数,即42,所以1/539的循环节长度为42。

《数论导引》里的差不多就是这些内容了,到现在为止求循环节长度的解法已经全部发上来了。


下面是另一个网友发表的回复:

我将做大胆的猜想(需证明):

1,两个整数相除,结果一定是循环小数。 (只是有些循环节更大些)
2,循环节大小跟被除数无关。
3,循环节大小跟除数成决定性关系。
4,如果被除数为1,那循环小数为“纯循环数”;如果如果被除数>1,那循环小数可能为“非纯循环数”。
5,除数的最大素数越大,往往循环节越大。


关于@3的关系:(我很多概念忘记了,叫不上名,用实际数字说明)
Ex: 153 = 17 * 3 * 3;
我们现说“153”由两个素数组成: 17,3。

那么 循环节大小 受17主要影响,受3次要影响。

被除数:1;  除数:如下:
------------------------------------------------------
2,  除尽
3,  0.33333333333333333333333333333333
5,  除尽
7,  0.14285714285714285714285714285714
11, 0.090909090909090909090909090909091
13, 0.076923076923076923076923076923077
17, 0.058823529411764705882352941176471
19, 0.052631578947368421052631578947368
23, 0.043478260869565217391304347826087
29, 0.034482758620689655172413793103448
31, 0.032258064516129032258064516129032
...
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2009-11-3 22:26:10 | 显示全部楼层
这本身是个非常浅显的问题,楼上引用的回复已经足够明了。

另外,你是不是在发新主题中点了“更多设定”,而后又在“售价”里填写了数字?
若这样发帖就成了收费主题,别人参与你的讨论反而得先付费了。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-5-4 22:27 , Processed in 0.058512 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表