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

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

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

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

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

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

от richie_mayert , 8 месяцев назад

@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;
}


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