次のコードがあります。
import math
print "Hey, lets solve Task 4 :)"
number1 = input ("How many digits do you want to look at? ")
number2 = input ("What would you like the digits to add up to? ")
final = []
if number1 == 1:
cow = range(1,10)
elif number1 == 2:
cow = range(10,100)
elif number1 == 3:
cow = range(001,1000)
elif number1 == 4:
cow = range(1000,10000)
elif number1 == 5:
cow = range(10000,100000)
elif number1 == 6:
cow = range(100000,1000000)
elif number1 == 7:
cow = range(1000000,10000000)
elif number1 == 8:
cow = range(10000000,100000000)
elif number1 == 9:
cow = range(100000000,1000000000)
elif number1 == 10:
cow = range(1000000000,10000000000)
number3 = cow[-1] + 1
number10 = number3
number8 = number3 - 1
if number1 == 1:
test = range(1,number10)
elif number1 == 2:
test = range(00,number10)
elif number1 == 3:
test = range(000,number10)
elif number1 == 4:
test = range(0000,number10)
elif number1 == 5:
test = range(00000,number10)
elif number1 == 6:
test = range(000000,number10)
elif number1 == 7:
test = range(0000000,number10)
elif number1 == 8:
test = range(00000000,number10)
elif number1 == 9:
test = range(000000000,number10)
elif number1 == 10:
test = range(0000000000,number10)
if number1 == 1:
number7 = number8
elif number1 == 2:
number7 = number8 + 1
elif number1 == 3:
number7 = number8 + 1
elif number1 == 4:
number7 = number8 + 1
elif number1 == 5:
number7 = number8 + 1
elif number1 == 6:
number7 = number8 + 1
elif number1 == 7:
number7 = number8 + 1
elif number1 == 8:
number7 = number8 + 1
elif number1 == 9:
number7 = number8 + 1
elif number1 == 10:
number7 = number8 + 1
n = 0
while n < number7:
a = test[n]
a = str(a)
print a
number4 = sum(int(x) for x in a)
if number4 == number2:
final.append(number4)
n = n + 1
print len(final)
基本的に、このコードは、合計すると特定の数になる整数を含む数字の桁数を計算します。実行すると、希望する桁数 (例: 4) とそれらを合計すると何になるかを尋ねられます。たとえば、4 と 18 を選択すると、1000 から 9999 までの合計が 18 になる整数を持つ数がいくつあるかを計算します (例: 4545)。
問題は、最後の質問で 10 桁の数を足して 39 になる数を尋ねることです。このコードを使用すると、1 から最大の 10 桁の数まで数えなければならないため、コンピューターの処理速度が遅くなります。試してみたら、コンピューターがクラッシュしました。
ループを高速化する方法はありますか?
ありがとうございました!