これが私が解決しようとしている問題です:http://projecteuler.net/problem=20(100の数字の合計を見つけてください!)
数値タイプが2倍しかないLuaを使用しているので、手動でアプローチする必要がありました。問題16で使用していたのとほぼ同じコードを使用していますが、これは類似しています(2 ^ 1000の桁の合計を求めます)。しかし、今回の問題は、まともな時間で解決するための私のアルゴリズムを超えているようです-それは約32に達します!次の合計を計算するために10秒以上待たなければならない前に、そして34までに!待っていたよりも時間がかかります。これをスピードアップする方法はありますか(「生の」Luaを使用します-LuaJITなどではありません)?
local sum = {1}
for i=1,100 do
local carry = 0
for v=1,#sum do
local c = carry
carry = 0
local t = sum[v] * i
while t >= 10 do
t = t - 10
carry = carry + 1
end
local s = t + c
while s >= 10 do
s = s - 10
carry = carry + 1
end
sum[v] = s
end
if carry > 0 then
sum[#sum+1] = carry
end
print(""..i.."! = "..getCharactersReversed(sum))
end