Как реализовать bignum в схеме с учетом следующей грамматики? - PullRequest
3 голосов
/ 01 марта 2012

Я думаю, что в Scheme есть встроенный тип Bignum для обработки произвольно больших чисел, но если я хочу реализовать это сам, как бы я это сделал?

Если я не ошибаюсь, он имеет следующую грамматику:| п |= () когда n = 0 | n |= (r. | q |) где n = qN + r, 0 <= r <pre>N = base r = remainder q = quotient

Например, когда основание N = 16, | 33 |= (1 2) где 1 - остаток, 2 - частное.

PS: Используя реализацию bignum, как перейти к следующему номеру (преемнику) и к предыдущему номеру (предшественнику),такие что successor |n| = |n+1| и predecessor |n+1| = |n|

1 Ответ

5 голосов
/ 01 марта 2012

Вам повезло. Вопрос классический. Andre van Meulebrock написал отличную серию статей о бигнумах (представление и связанные алгоритмы). Статья содержит исполняемый код Scheme, поэтому поэкспериментируйте с его кодом.

Загляните в архив MacTech:

http://www.mactech.com/articles/mactech/Vol.08/08.03/BigNums/index.html

...