2014-09-27 84 views
-5

乘以一个整数的数字和持续的过程给出了令人惊讶的结果是产品的序列总是到达一个数字。例如: 71535155 88 64248 27 144 的必要达到单个位的数字产品的数目称为的 该整数持久性数。因此,715和88有3持续数,而27持续2 做一个程序,找出具有持久性大于3的唯一两位数字? 这就是问题所在。Python的持久性名录

for i in range(10,100): 
    for l in range(i): 
     numbers = list(str(l)) 
     num = int(numbers[0]) * int(numbers[1]) 

这就是我所拥有的。请帮忙

回答

0

大家都认为这是一个不好的问题,所以我觉得不好回答,并帮助你作弊:( ,但它很有趣!:)和解决的东西是一个标志,你很聪明,嘿,和不是真正的尝试是相反的标志。

def newn(n): 
    numbers = [int(c) for c in str(n)] 
    new = 1 
    for i in numbers: 
     new *= i 
    digits = len(str(new)) 
    return new, digits 

for n in xrange(99,9,-1): 
    if persistence > 3: 
     print 'persistence %i, number %i' % (persistence, n + 1) 
     break 

    digits, persistence = 2, 0 
    while digits != 1: 
     persistence += 1 
     n, digits = newn(n) 
0

答案是77,都到49,都到36,都到18都到8

def multiply_digits(x): 
    total = 1 
    for digit in str(x): 
     total *= int(digit) 
    return total 

for value in range(11, 100): 
    new_value = multiply_digits(value) 
    persistance = 1 
    while new_value >= 10: 
     new_value = multiply_digits(new_value) 
     persistance += 1 
     if persistance > 3: 
      print value