【发布时间】:2012-03-01 16:34:22
【问题描述】:
我认为 Scheme 有一个内置类型 Bignum 用于处理任意大的数字,但如果我想自己实现它,我该怎么做呢?
如果我没记错的话,它的语法如下: |n| = () 当 n=0 时 |n| = (r . |q|) 其中 n=qN+r, 0
N = base
r = remainder
q = quotient
例如当基数 N=16 时,|33| = (1 2) 其中 1 是余数,2 是商。
PS:使用 bignum 实现我怎么能转到下一个数字(后继)和前一个数字(前任),例如 successor |n| = |n+1| 和 predecessor |n+1| = |n|
【问题讨论】:
-
您的语法不正确,尽管它指向了正确的方向。正确回答您的问题需要一本书,而不是 Stack Overflow 上的一三段。大整数算法的规范描述在 Knuth 的 AoCPv2 中。或者,如果您愿意,我去年夏天在我的博客上做了一个由七部分组成的系列(使用 Scheme 中的代码);请参阅我的个人资料以获取网址。