Наименьшее целое число, большее, чем очень большое число

Я пытаюсь найти наименьшее целое число больше, чем очень большое число (например, exp (5000000)). Как мне это сделать? Если это не программно (потому что это оценивается до бесконечности или переполнения в MATLAB или моем калькуляторе), то математически? (Уже пробовал exp (floor (log (exp (5000 * 1024)))) но это просто даст бесконечность).

4
просто чтобы дать вам представление о том, насколько велика эта цифра, я попробовал следующее в MATLAB с помощью Symbolic Toolbox: ceil (sym ('exp (5000000)')) результат огромен: pastebin.com/BXDbPydL
добавлено автор Amro, источник
Да. Он имеет примерно 2,17 миллиона цифр. Огромный.
добавлено автор user85109, источник
что именно вы имеете в виду, находя математически? вы ищете функцию, которая дает, например, n-ю цифру?
добавлено автор vlsd, источник
Я не понимаю, почему размер номера должен быть проблемой. Даже если вы используете целостный байт, чтобы написать одну цифру, файл, содержащий это число, будет не больше 3 Мб.
добавлено автор vlsd, источник

4 ответы

Вы хотите, чтобы что-то предоставляло арифметику с переменной точностью, например Symbolic Math Toolbox , и потолочная функция .

3
добавлено

Как Клас саис. Если вы целое число i N , то наименьшее большее целое число N + 1 . Чтобы вычислить это, используя, например, C, вы можете написать такую ​​функцию, как

unsigned long smallestLargerInteger(unsigned long startNum) {
  return startNum +1;
}

Чтобы убедиться, что вы не переполняете длинный , у вас может быть что-то вроде

#define __HALF_MAX_SIGNED(type) ((type)1 << (sizeof(type)*8-2))
#define __MAX_SIGNED(type) (__HALF_MAX_SIGNED(type) - 1 + __HALF_MAX_SIGNED(type))
#define __MIN_SIGNED(type) (-1 - __MAX_SIGNED(type))

#define __MIN(type) ((type)-1 < 1?__MIN_SIGNED(type):(type)0)
#define __MAX(type) ((type)~__MIN(type))

unsigned long smallestLargerInteger(unsigned long startNum) {
  if(__MAX(long) == startNum) {
   //handle overflow error messaging here
  }

  return startNum +1;
}
2
добавлено

Если вы хотите вычислить все цифры большого числа, самым простым решением, вероятно, будет использование Maple или Mathematica. Если вы просто хотите что-то простое и бесплатное, вы можете использовать Wolfram Alpha .

Например:

2
добавлено

Вам нужно использовать библиотеку, которая обрабатывает большие числа.

Моя карма Google, похоже, указывает на символическую математическую панель инструментов ,

0
добавлено
@JustinM Вы правы. Я удалил неверный оператор.
добавлено автор Klas Lindbäck, источник
Но N - целое число, а не число. exp (5000000) может не обязательно быть целым числом.
добавлено автор Justin M, источник
Infernal Math
Infernal Math
389 участник(ов)

http://www.zepta.ru/index.php?title=Заглавная_страница Приглашение в чат: https://t.me/matheden

comput.math
comput.math
289 участник(ов)

Прикладная математика и численные методы. Без оффтопа, рекламы, флуда. Вышмат: @higher_math Физика: @physpub Новичкам: @starter_math @JuliaLanguage @rlang_ru Книги брать здесь: libgen.io И по хештегу #book

higher.math
higher.math
234 участник(ов)

Higher mathematics / высшая математика Подборка книжек: https://ru.stackoverflow.com/a/683632/1084 Вычмат: @comput_math Физика: @physpub LaTeX: @pro_latex

Starter Math
Starter Math
79 участник(ов)

Для тех, кто боится спросить в @higher_math Вычмат: @comput_math Физика: @physpub