long不足以存储我做的数字/计算。
我试图从项目欧拉解决问题16: https://projecteuler.net/problem=16
但我不能,因为2 ^ 63的存储空间大于存储的空间
q)prod2: {[y] (y-1) {x*2}/ 2}
q)prod2(63)
0N
q)prod2(62)
4611686018427387904
(我需要计算prod2(1000)
)
答案 0 :(得分:1)
您不能在长数据类型中存储那么大的数字,因为它超出了限制。有2个选择:
A)用支持Java等大整数的其他语言实现逻辑,然后在您的KDB进程中调用该代码。
B)如果要在KDB中实现此功能,则必须使用其他数据结构(例如向量或字符串)来存储大数字。
例如在布尔向量中表示2 ^ 62:
q) 1b,62#0b
阅读有关计算整数幂并实现其中之一的算法。还有一些算法可用于二进制表示。
您可以在此处了解更多信息:https://en.wikipedia.org/wiki/Exponentiation_by_squaring