Jon*_*son 20 math precision lua bignum
我正在处理那些我无法完成的大数字.使用Lua的标准数学库,似乎没有方便的方法来保持精度超过某些内部限制.我还看到有几个库可以加载以使用大数字:
此外,如果已建立绑定,则可以从Lua调用C 中的许多库.
您是否有过使用这些库中的一个或多个的经验?
lhf*_*lhf 15
使用lbc而不是lmapm会更容易,因为lbc是自包含的.
require"bc"
s=bc.pow(2,1000):tostring()
z=0
for i=1,#s do
z=z+s:byte(i)-("0"):byte(1)
end
print(z)
Run Code Online (Sandbox Code Playgroud)
我使用Norman Ramsey的建议来解决Project Euler问题#16.我认为问题的关键在于准确计算303位整数,这并不是一个扰流.
以下是我需要安装和使用库的步骤:
Lua需要在启用动态加载的情况下构建.我使用Cygwin,但我改变PLAT
的src/Makefile
是linux
.默认情况下,none
不启用动态加载.
该MAMP需要建立和安装的地方,你的C编译器可以找到它.我把libmapm.a
在/usr/local/lib/
.接下来m_apm.h
和m_apm_lc.h
去/usr/local/include/
.
需要将lmamp的makefile 更改为Lua和MAMP库的正确位置.对我来说,这意味着在取消的第二个声明LUA
, LUAINC
,LUALIB
,和LUABIN
和编辑的声明MAMP
.
最后,mapm.so
需要放在Lua会找到的地方.我把它放在了/usr/local/lib/lua/5.1/
.
谢谢大家的建议!