Thư viện Boost.Multiprecision cho phép làm việc với số nguyên lớn tùy ý độ chính xác (arbitrary precision) vượt quá giới hạn 64-bit.
Kiểu dữ liệu thường dùng
int128_t,int256_t,int1024_t- độ chính xác cố địnhcpp_int- độ chính xác tùy ý (tự động mở rộng)
Ví dụ 1: Nhân số lớn với int128_t
#include <iostream>
#include <boost/multiprecision/cpp_int.hpp>
using namespace boost::multiprecision;
using namespace std;
int128_t largeProduct(long long a, long long b) {
return (int128_t)a * b;
}
int main() {
long long n1 = 98745636214564698;
long long n2 = 7459874565236544789;
cout << "Tich = " << largeProduct(n1, n2) << endl;
return 0;
}
Đầu ra
Tich = 736630060025131838840151335215258722
Ví dụ 2: Giai thừa lớn với cpp_int
#include <iostream>
#include <boost/multiprecision/cpp_int.hpp>
using namespace boost::multiprecision;
using namespace std;
cpp_int largeFactorial(int n) {
cpp_int fact = 1;
for (int i = n; i > 1; --i) fact *= i;
return fact;
}
int main() {
cout << "50! = " << largeFactorial(50) << endl;
return 0;
}
Đầu ra
50! = 30414093201713378043612608166064768844377641568960512000000000000