【发布时间】:2016-11-16 21:16:51
【问题描述】:
假设我的输入是39 - 我想正确地循环遍历这个数字的各个部分,直到最终结果是一位数(3*9 = 27、2*7 = 14、1*4 = 4),并返回乘以的次数作为输出,在本例中为3.
我对循环的基本了解使我进入了第 1 步,在该步骤中,我使用上面的示例成功地返回了 27。
def times_multiplied(n):
total = 1
for i in map(int, str(n)):
total *= i
return total
另一个想法是减少数字,但还没有找到计数,是添加额外的 for 循环,但我的直觉说这是太多代码。我相信 Python 提供了一个更简单、更优雅的解决方案......
最后,当然,是捕获乘数计数的方法,我的直觉也说这可能与 Counter 有关...我不肯定。
请帮忙!
【问题讨论】:
-
顺便说一句,这在基数 10 中称为multiplicative persistence of number。OEIS 条目是A031346,顺便提一下,它提供了一个类似于@GReaperEx 答案的示例 Python 函数。不幸的是,似乎没有直接的公式,所以这和你能得到的一样好。
标签: for-loop math multiplication