, которые имеют более 2 ^ 81 цифр
Нефракционное число с 2 ^ 81 битами, займет 3 * 10 ^ 11 терабайт данных.За число.
Это при условии , что вы хотите, чтобы каждая цифра и данные не сжимались.
Вы могли бы попытаться сжать данные, хранящие их, в каком-то разреженном массиве, который выделяет память только для ненулевых элементов, но это не гарантирует, что данные будут помещаться где угодно.
Такая точность бесполезна и невозможна в современных аппаратных средствах.2 ^ 81 бит займет безумное количество времени, чтобы просто пройтись по числу (9584 триллиона лет, при условии, что 1 байт занимает 1 миллисекунду), не говоря уже о умножении / делении.Я также не могу представить ни одной проблемы, которая требовала бы такой точности.
Ваш единственный вариант - снизить точность до первых N значащих цифр и использовать числа с плавающей запятой.Поскольку данные не помещаются в double, вам придется использовать библиотеку bignum с поддержкой чисел с плавающей запятой, которая обеспечивает чрезвычайно большие числа с плавающей запятой.Поскольку вы можете представить 2 ^ 81 (экспонента) в битах, вы можете сохранить начало числа, используя очень большую плавающую точку.
1000 000 в базовой десятке
Независимо от вашей базы положительное число займет минимум пол (log2 (число)) + 1 бит, чтобы сохранить его.Если base не равен 2, то для его хранения потребуется больше, чем floor (log2 (число)) + 1 бит.Числовая база не уменьшит количество требуемых бит.