此問題,可以發現here和如下:爲什麼我的代碼不能用於測試輸入? - 項目歐拉549
的最小數目m,使得10將米!是m = 5。
最小的數m如25分m!是m = 10。設s(n)爲最小的數m,使n除以m !.
因此s(10)= 5和s(25)= 10。
設S(n)爲Σs(i),2≤i≤n。
S(100)= 2012。
找到S(10⁸)。
這是我的代碼,你可以看到,它是一個完全蠻力的解決方案,它似乎在幾分鐘內運行10 ** 8,除此之外,s(10)= 5和S(25)= 10(根據我的程序),因爲這個問題說,除了這個,我也產生了一些隨機數,並檢查了他們:
def is_int(x): return int(x) == x
factorials = [1]
for i in range(1, 25):
factorials.append(factorials[-1] * i)
def s(n):
i = 2
while not is_int(factorials[i]/n): i += 1
return i
def S(x):
S = 0
for n in range(2, x + 1):
if n % 10 ** 5 == 0: print("{0}% done!".format(n/x * 100))
S += s(n)
return S
我已經檢查了預先計算階乘值,他們是正確的。
的輸出S(100)是1221,當它應該是2012年,這裏有我的價值觀 爲S(N):
s(2) = 2
s(3) = 3
s(4) = 4
s(5) = 5
s(6) = 3
s(7) = 7
s(8) = 4
s(9) = 6
s(10) = 5
s(11) = 11
s(12) = 4
s(13) = 13
s(14) = 7
s(15) = 5
s(16) = 6
s(17) = 17
s(18) = 6
s(19) = 19
s(20) = 5
s(21) = 7
s(22) = 11
s(23) = 19
s(24) = 4
s(25) = 10
s(26) = 13
s(27) = 9
s(28) = 7
s(29) = 20
s(30) = 5
s(31) = 19
s(32) = 8
s(33) = 11
s(34) = 17
s(35) = 7
s(36) = 6
s(37) = 19
s(38) = 19
s(39) = 13
s(40) = 5
s(41) = 20
s(42) = 7
s(43) = 20
s(44) = 11
s(45) = 6
s(46) = 19
s(47) = 19
s(48) = 6
s(49) = 14
s(50) = 10
s(51) = 17
s(52) = 13
s(53) = 19
s(54) = 9
s(55) = 11
s(56) = 7
s(57) = 19
s(58) = 20
s(59) = 20
s(60) = 5
s(61) = 20
s(62) = 20
s(63) = 7
s(64) = 8
s(65) = 13
s(66) = 11
s(67) = 20
s(68) = 17
s(69) = 20
s(70) = 7
s(71) = 19
s(72) = 6
s(73) = 20
s(74) = 20
s(75) = 10
s(76) = 19
s(77) = 11
s(78) = 13
s(79) = 19
s(80) = 6
s(81) = 9
s(82) = 20
s(83) = 19
s(84) = 7
s(85) = 17
s(86) = 20
s(87) = 20
s(88) = 11
s(89) = 20
s(90) = 6
s(91) = 13
s(92) = 19
s(93) = 20
s(94) = 19
s(95) = 19
s(96) = 8
s(97) = 20
s(98) = 14
s(99) = 11
s(100) = 10
可以請你說爲什麼代碼不能正常工作?
蟒蛇2或Python 3? python 2將需要投入浮動。 –