Как хранить 10 ^ 6 цифр в целом числе в C ++?
Мне нужно сохранить более 10-ти значных 6-значных цифр в типе данных, который я могу выполнять с ним операции. Я пытался долго долго int, но, конечно, не удалось, потому что это только 64-битный.
долго долго может держать до 9223372036854775807
использование GMP, если вы хотите выполнять слишком большие и большие числовые операции или сохранять значения.
Получить библиотеку BigInt. GnuMP является фаворитом:
Вы также можете просто написать свой собственный класс — есть много примеров, которые вы можете адаптировать.
Это оказалось «XY проблема«; реальный вопрос:
Я изучаю c ++ в моем колледже, поэтому я пытаюсь решить некоторые проблемы, чтобы расширить свои знания, поэтому одной из проблем является проверка получения числа, перемешивание его до тех пор, пока я не получу число, кратное 7. минимум 4 цифры и максимум 10 ^ 6 цифр.
моя проблема состоит в том, чтобы случайным образом перемешать его несколько раз, пока я не получу число, делимое на 7, например, если он дал мне 12, я печатаю 21. поэтому я должен сохранить его в строке, чтобы перемешать его, затем я пытаюсь передать его в Integer, чтобы проверить, делится на 7 или нет, а если нет, я снова перемешиваю и так далее.
Эта проблема намного проще; он в основном реализует десятичное длинное деление для делителей из одной цифры. Наивный подход предельно прост:
bool DivisibleBySeven(const char *str)
{
int remainder=0;
for(;*str;++str)
remainder=(remainder*10+(*str-'0')) % 7;
return remainder==0;
}
Это, безусловно, может быть улучшено для повышения производительности (например, преобразование больших кластеров цифр для выполнения меньшего количества делений), но это основная идея, которая, кстати, заключается в том, как бы вы делали это карандашом и бумагой.
Обратите внимание, что, вероятно, в этом случае работа с двоичными библиотеками bignum не даст вам никакого преимущества, поскольку большую часть времени будет потрачено впустую на преобразование из строкового представления (которое необходимо для эффективного выполнения перемешивания цифр) и внутреннего двоичного представления.
Используйте или напишите большую целочисленную библиотеку. SO — это не то место, где можно просить или указывать на какую-либо конкретную библиотеку, но если вы выбрали опцию (конкретную библиотеку или свою собственную) и у вас есть конкретные вопросы, мы здесь, чтобы помочь.
Ты можешь использовать BigIntegerLibrary.h
Заголовок файла и рассчитать для очень больших значений.
Вы можете обратиться по этой ссылке за помощью.
BigInt Library.