擅长:python、mysql、java
<p>哦,接着说:</p>
<pre><code>next(
sum(x)
for i in range(1, input) # overkill
for x in itertools.product(range(10), repeat = i)
if reduce(operator.mul, x) == input
)
</code></pre>
<p>编辑:您已经将问题改为返回乘积而不是求和,因此请将<code>input</code>替换为<code>sum(x)</code>。在</p>
<p>我不能马上确定你是想要第一个匹配,还是你想要所有因子数等于最小的匹配。如果是后者,您可以通过从这个迭代器中取出<code>input, i</code>来完成,然后使用<code>itertools.groupby</code>根据元组中的第二个值收集它们,然后只获取结果中的第一个值,然后对其进行迭代以获得所有匹配项(尽管,因为现在输出的是<code>input</code>,所以除了长度之外,这有点没意思)。在</p>