擅长:python、mysql、java
<p>我不明白你最初的问题描述。如果你的意思是一个数字的倒数是否包含这些数字,一个问题是大多数这样的结果有无限多的数字。编写<code>0110</code>这样的数字会使事情更加复杂,因为在python2中是八进制(在python3中无效);它的值是72。你知道吗</p>
<p>但有一件事我很容易回答,“太长”的部分。您可以从十进制请求任意(但仍然有限)精度:</p>
<pre><code>>>> f='{:f}'.format(decimal.Context(prec=200).divide(1,1234))
>>> f[:40]
'0.00081037277147487844408427876823338735'
>>> f.index('00810372')
3
>>> f.index('00810372', 3+1)
91
</code></pre>
<p>因此,当它发生时,<code>1/1234</code>的数字流在88个十进制数字之后重复。所有的有理数都有这样的循环长度(6855006位之后的1/123456789循环)。但是默认的十进制上下文没有生成足够的数字来观察这个数字的整个循环。你知道吗</p>
<p>解决这个问题的正确方法可能包括显式执行长除法,并跟踪沿途遇到的分数。当你发现一个重复时,你就可以很容易地发现。类似于(可能是缓慢的):</p>
<pre><code>fractions=set()
digits=[]
while fraction not in fractions:
digit = math.floor(fraction)
fractions.add(fraction)
digits.append(digit)
fraction = (fraction-digit)*10
</code></pre>