有什么办法可以在Python中得到一个小数部分的重复小数部分?

问题描述:

我正在使用Python的十进制模块使用分数,我想只得到某个分数的重复部分。例如:如果我有1/3我想得到3,如果我有1/7我想得到142857.是否有任何标准函数来做到这一点?有什么办法可以在Python中得到一个小数部分的重复小数部分?

+4

欧拉项目n°26? – ChristopheD 2009-07-12 21:47:06

+0

是的,欧拉项目26号。 – 2009-07-12 21:50:29

找到表格10 ** k-1的第一个数字,该数字正好除以分母的分母,将其除以分子并乘以分子,即可得到重复部分。

由于给出的答案可能是项目euler的扰流板(这通常不是在这里做的*),我想给这个提示:读this(1.2节应该响铃)。

我知道这个问题是很久以前的事,但我想人们可能还在寻找这样的事情,所以我想我会提一些事情要牢记这样做的时候,因为我试过编码,并最终改变了我的心灵使用长时间划分并找出在分割后得到余数时发生重复的地方。我实际上最初试图使用蚂蚁Aasma建议的方法。

我试图得到这样的输出为1/7,因为我的函数试图输出一个字符串,可以用作一个问题的答案; “0.142857 142857 ......”

小数如1/7使用的是由蚂蚁Aasma提供的方法很容易被发现,但是当你尝试的东西,如1/35变得痛苦 - 这不能被划分成数字满9。首先,任何分母都必须有任何10的因子分开 - 即将所有的5和2分开,将诸如1/35的分数转换为0.2/7

对于例如1/70 ,我相信最好的办法是实际找到1/7,然后在小数点后面加上0。对于1/35,你可以将它转换为0.2/7,然后转换为2/7,重复部分和小数点之间为0。

只要使用蚂蚁Aasma建议的方法,请牢记几个提示。