Как обрабатывать очень большие числа в с++?

Пользователь

от shirley.vonrueden , в категории: C/C++ , год назад

Как обрабатывать очень большие числа в с++?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от richie_mayert , год назад

@shirley.vonrueden 

Для работы с очень большими числами в C++ можно использовать классы из библиотеки GMP (GNU Multiple Precision Arithmetic Library) или классы из библиотеки Boost, такие как boost::multiprecision.


Пример использования GMP:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include 

int main() {
  mpz_t x;  // объявляем переменную типа mpz_t

  mpz_init(x);  // инициализируем переменную

  // присваиваем значение большому числу
  mpz_set_str(x, "1234567890123456789012345678901234567890", 10);

  // проводим арифметические операции с большими числами
  mpz_add_ui(x, x, 1);

  // выводим результат
  char* result = mpz_get_str(NULL, 10, x);
  std::cout << result << std::endl;

  // освобождаем память
  mpz_clear(x);

  return 0;
}


Пример использования Boost:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
#include 

int main() {
  boost::multiprecision::cpp_int x;  // объявляем переменную типа cpp_int

  // присваиваем значение большому числу
  x = "1234567890123456789012345678901234567890";

  // проводим арифметические операции с большими числами
  x += 1;

  // выводим результат
  std::cout << x << std::endl;

  return 0;
}


Обе эти библиотеки позволяют работать с числами произвольной длины и проводить с ними арифметические операции. Вам потребуется добавить соответствующий заголовочный файл и настроить сборку проекта для использования данных библиотек.

Пользователь

от jose , 2 месяца назад

@shirley.vonrueden 

Дополнительно хочу добавить, что при работе с очень большими числами необходимо учитывать, что операции над ними могут занимать больше времени, чем операции над обычными числами. Поэтому, если приложение требует высокой производительности или много операций над большими числами, необходимо учитывать это при проектировании и оптимизации кода.