http://projecteuler.net/problem=20 Я написал код для решения этой проблемы, однако в некоторых случаях он кажется точным, а в других неточным.Когда я пытаюсь решить задачу до 10 (ответ дан на вопрос 27), я получаю 27, правильный ответ.Однако, когда я пытаюсь решить заданный вопрос (100), я получаю неправильный ответ 64, поскольку ответом является другое.
Вот мой код:
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))))
64
Поскольку Lua преобразует большие числа в научную запись, мне пришлось преобразовать ее обратно в стандартную запись.Я не думаю, что это проблема, хотя это может быть.
Есть ли какое-либо объяснение этому?