http://projecteuler.net/problem=20 Я написал код, чтобы выяснить эту проблему, однако в некоторых случаях это кажется точным и неточным в других. Когда я пытаюсь решить проблему до 10 (ответ дан в вопросе, 27), я получаю 27, правильный ответ. Однако, когда я пытаюсь решить заданный вопрос (100), я получаю 64, неправильный ответ, так как ответ - это что-то другое.Project Euler -Prob. # 20 (Lua)
Вот мой код:
function factorial(num)
if num>=1 then
return num*factorial(num-1)
else
return 1
end
end
function getSumDigits(str)
str=string.format("%18.0f",str):gsub(" ","")
local sum=0
for i=1,#str do
sum=sum+tonumber(str:sub(i,i))
end
return sum
end
print(getSumDigits(tostring(factorial(100))))
Поскольку Lua преобразует большие числа в научной нотации, я должен был преобразовать его обратно в стандартной нотации. Я не думаю, что это проблема, хотя это может быть.
Есть ли какие-либо объяснения этому?
Спасибо за информацию, а также за альтернативу! Я предполагаю, что то же самое применимо и к проблеме 16, также (http://projecteuler.net/problem=16). – user998367
Точно. На Euler существует больше проблем «большого числа», поэтому он рассчитывает написать многоразовый код. – ComicSansMS