当我在终端上运行这个程序时,我从来没有看到任何东西,直到它打印出来30秒后:
killed 9
第一次之后,我将print(i)
添加到第23行以查看发生了什么,但它甚至从未打印第一个数字。有件事我不明白。将for循环更改为非常小的数字后,它就可以正常工作了。我不能改变循环的范围,因为这些是我需要查看的确切数字。我该怎么办?你知道吗
6 def isPandigital(digits):
7 sortedDigits = sorted(digits)
8 numDigits = len(sortedDigits)
9
10 if len(set(sortedDigits)) != numDigits:
11 return False
12
13 for i in range(1, numDigits + 1):
14 if i != sortedDigits[i - 1]:
15 return False
16
17 return True
18
19 primes = [2, 3, 5, 7, 11, 13, 17]
20 total = 0
21
22 for i in range(1234567890, 9876543210 + 1):
23 print(i)
24 digits = [int(dig) for dig in str(i)]
25 numDigits = 10
26
27 if isPandigital(digits):
28 for i in range(numDigits - 3):
29 newNum = int(''.join(map(str, digits[i:i + 3])))
30 if not (newNum % primes[i] == 0):
31 break
32 else:
33 total += i
尝试使用生成器(xrange)而不是列表(range),即
相关问题 更多 >
编程相关推荐