Tìm giá trị nguyên lớn nhất mà giai thừa có thể tính được trên máy tính trong C++.
Giai thừa tăng rất nhanh, C++ chỉ xử lý được đến giá trị nhất định bằng kiểu dữ liệu cơ bản. Cần tìm giới hạn này.
Phương pháp
Dùng tính chất kiểu dữ liệu: khi vượt quá giá trị tối đa, kiểu số có dấu trả về số âm. Dùng long long int (kiểu cơ bản lớn nhất).
Ví dụ
#include <iostream>
using namespace std;
int calcMaxFactVal() {
int maxVal = 1;
long long int maxFactorial = 1;
while (true) {
if (maxFactorial < 0)
return (maxVal - 1);
maxVal++;
maxFactorial *= maxVal;
}
return -1;
}
int main() {
cout << "Giá trị nguyên tối đa để tính giai thừa trên máy là " << calcMaxFactVal();
return 0;
}
Đầu ra
Giá trị nguyên tối đa để tính giai thừa trên máy là 20