Q 中的大整数类型
Big integer type in Q
长 "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)
)
你不能在 long 数据类型中存储那么大的数字,因为它超出了它的限制。有2个选择:
A) 用支持 Java 等大整数的其他语言实现您的逻辑,并在您的 KDB 进程中调用该代码。
B) 如果你想在 KDB 中实现这个,那么你将不得不使用其他数据结构,如向量或字符串来存储大数。
例如在布尔向量中表示 2^62:
q) 1b,62#0b
阅读有关计算整数幂并实现其中一种算法的信息。还有一些算法适用于二进制表示。
您可以在此处阅读更多内容:https://en.wikipedia.org/wiki/Exponentiation_by_squaring
长 "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)
)
你不能在 long 数据类型中存储那么大的数字,因为它超出了它的限制。有2个选择:
A) 用支持 Java 等大整数的其他语言实现您的逻辑,并在您的 KDB 进程中调用该代码。
B) 如果你想在 KDB 中实现这个,那么你将不得不使用其他数据结构,如向量或字符串来存储大数。
例如在布尔向量中表示 2^62:
q) 1b,62#0b
阅读有关计算整数幂并实现其中一种算法的信息。还有一些算法适用于二进制表示。
您可以在此处阅读更多内容:https://en.wikipedia.org/wiki/Exponentiation_by_squaring