1 Million digits? 1 Billion? 1 Trillion? No Worries. This Library can handle any Integer of any Length.
bigint is a C++ library which can handle Very very Big Integers. It can calculate factorial of 1000000... it can go any big. It may be useful in Competitive Coding and Scientific Calculations which deals with very very large Integers. It can also be used in Decryption process. It has many inbuilt functions which can be very useful.
Download bigint header and include in your C++ program.
#include "bigint.h" // with proper file path Declartion is done like making object of bigint class. Intialization can be done by passing String or Integer or Long type at Object creation.
bigint a("56654250564056135415631554531554513813"); // big integer initialization with String
bigint b("60820564691661355463515465564664568"); // big integer initialization with String
bigint d(956486133); // big integer intialization with IntegerAddition can be done as it is done with general integer types of variables.
- (Note : variable's value and declaration will be followed as it goes.)
bigint c = a + b; // Addition, with both operand as bigint
cout << c << std::endl; // Output : 56715071128747796771095069997119178381
c = a + 56242; // Addition, with one operand as bigint and other as integer
cout << c << std::endl; // Output : 56654250564056135415631554531554570055
c = 52 + 98; // Addition, with both operand as integers.
cout << c << std::endl; // Ouput : 150
c = c + a + b; // Addition, with multiple operands
cout << c << std::endl; // Output : 56715071128747796771095069997119178531Subtraction can be done as it is done with general integer types variables.
c = a - b; // Subtraction, with both operand as bigint
cout << c << std::endl; // Ouput : 56593429999364474060168039065989849245
c = a - 56242; // Subtraction, with one operand as bigint and other as integer
cout << c << std::endl; // Output : 56654250564056135415631554531554457571
c = 52 - 98; // Subtraction, with both operand as integers.
cout << c << std::endl; // Output : -46
c = c - a - b; // Subtraction, with multiple operands
cout << c << std::endl; // Output : -56715071128747796771095069997119178427Multiplication can be done as it is done with general integer types variables.
c = a * b; // Multiplication, with both operand as bigint
cout << c << std::endl; // Output : 3445743511488768021543787806860750328299778111849236444610289955667677784
c = a * 56242; // Multiplication, with one operand as bigint and other as integer
cout << c << std::endl; // Output : 3186348360223645168045949889963688965870746
c = 52 * 98; // Multiplication, with both operand as integers.
cout << c << std::endl; // Output : 5096
c = c * a * b; // Multiplication, with multiple operands
cout << c << std::endl; // Output : 17559508934546761837787142663762383673015669257983708921734037614082485987264Division can be done as it is done with general integer types variables.
c = a / b; // Divison, with both operand as bigint
cout << c << std::endl; // Output : 931
c = a / 56242; // Divison, with one operand as bigint and other as integer
cout << c << std::endl; // Output : 1007329941397107773827949833426167
c = 98 / 56; // Divison, with both operand as integers.
cout << c << std::endl; // Output : 1
c = a / b / c; // Divison, with multiple operands
cout << c << std::endl; // Output : 931Mod can be done as it is done with general integer types variables.
c = a % b; // mod, with both operand as bigint
cout << c << std::endl; // Output : 56654250564056135415631554531554513813
c = a % 56242; // mod, with one operand as bigint and other as integer
cout << c << std::endl; // Output : 29399
c = 98 % 56; // mod, with both operand as integers.
cout << c << std::endl; // output : 42
c = a % b % c; // mod, with multiple operands
cout << c << std::endl; // Output : 41Conditionals can be used as it is done with general integer types variables. Supports : > , < , >= , <= , == , !=
if(a > b) {
cout << "a is greater than b" << std::endl; // It executes
} else {
cout << "a is smaller than b" << std::endl; // It does not executes
}
if(a != b) {
cout << "a is not equal to b" << std::endl; // It executes
} else {
cout << "a is equal to b" << std::endl; // It does not executes
}It takes one argument as string or int or long or long long and converts and return bigint of that particular argument provided.
b = to_bigint("56");It takes bigint as argument and return type is also bigint.
cout << big_abs(b) << std::endl; // Output : 60820564691661355463515465564664568
b = to_bigint("-60820564691661355463515465564664568");
cout << big_abs(b) << std::endl; // Output : 60820564691661355463515465564664568
b = big_abs(b);
cout << b << std::endl; // Output : 60820564691661355463515465564664568It takes two bigint as arguments and return type is also bigint, returns the maximum of both bigints.
cout << big_max(a, b) << std::endl; // returns maximum of both bigints
// Output : 56654250564056135415631554531554513813It takes two bigint as arguments and return type is also bigint, returns the minimum of both bigints.
cout << big_min(a, b) << std::endl; // returns minimum of both bigints
// Output : 60820564691661355463515465564664568It takes two bigint as arguments and return type is also bigint, returns the first bigint argument to the power second bigint argument.
b = to_bigint("2");
cout << big_pow(a, b) << std::endl; // return a to the power b bigint
// Output : 3209704106974854937901411896655926267350648828646359016173511958974807798969
b = to_bigint("60820564691661355463515465564664568");It takes one bigint as arguments and return type is also bigint(floor value), returns the square root of the bigint.
cout << big_sqrt(a) << std::endl; // returns sqrt of bigint
// Output : 7526901790514881921It takes one bigint as arguments and return type is also bigint(floor value), returns the log to base 2 of the bigint.
cout << big_log2(a) << std::endl; // returns log to the base 2 bigint
// Output : 125It takes one bigint as arguments and return type is also bigint(floor value), returns the log to base 10 of the bigint.
cout << big_log10(a) << std::endl; // returns log to the base 10 bigint
// Output : 37It takes two bigints as arguments and return type is also bigint(floor value), returns the first arg. log to base of second arg. of the bigint.
cout << big_logwithbase(a, b) << std::endl; // returns log of 'a' to the base 'b' bigint
// Output : 1It takes two arguments as bigint and swaps them.
big_swap(a, b);
cout << a << "\t" << b << std::endl; // Output : 56 56654250564056135415631554531554513813It takes two bigint as arguments and return type is also bigint, returns the gcd of both as bigint.
cout << big_gcd(a, b) << std::endl; // Output : 1It takes two bigint as arguments and return type is also bigint, returns the lcm of both as bigint.
cout << big_lcm(a, b) << std::endl; // Output : 3172638031587143583275367053767052773528It takes one bigint as argument and return type is also bigint, returns the factorial of arg. bigint.
a = to_bigint("15");
cout << big_fact(a) << std::endl; // Output : 1307674368000It takes one bigint as argument and return type is boolean, returns true if the bigint is prime or false in other cases.
a = to_bigint("67");
b = to_bigint("33");
cout << big_isPrime(a) << std::endl; // Output : 1 (true)
cout << big_isPrime(b) << std::endl; // Output : 0 (false)It takes one bigint as argumnet and return type is also bigint, returns bigint after reversing the digits on the bigint.
a = to_bigint("65894");
cout << big_reverse(a) << std::endl; // Output : 49856It takes one bigint as argument and return type is boolean, returns true if the bigint is palindromic bigint or false in other cases.
cout << big_isPalindrome(a) << std::endl; // Output : 0 (false)
a = to_bigint("654456");
cout << big_isPalindrome(a) << std::endl; // Output : 1 (true)Increment and Decrement can be done as it is done with general integer types of variables.
cout << a << "\t" << ++a << std::endl; // Output : 654456 654457
cout << a << "\t" << --a << std::endl; // Output : 654457 654456