C++で数値の階乗を求めるコードを書いた。C++:coutを使ってlong long intを正しく出力する方法
ここにコードがあります。
#include <iostream>
using namespace std;
unsigned long long getFactorial(int);
int main(int argc, char **argv) {
int num = 5;
unsigned long long factorial = getFactorial(a);
cout << "Factorial of " << num << ": " << factorial << endl;
return 0;
}
unsigned long long getFactorial(int num) {
int i;
unsigned long long factorial = 1;
for(i=1; i<=num; i++) {
factorial *= i;
}
return factorial;
}
私はnum
値に5を代入
uint64_t(8バイト)は約93を保持できます! 100!単純に大きすぎます。 92より小さいと試してみてください!おそらく、符号なしlong long、intまたは符号なし数値だけを使用してください。 –
より大きい階乗については、gmp(拡張精度演算)を調べてください。それは1000を扱うことができます!、結果として大きな文字列を生成します。 –
あなたは結論92にどうやって到着しましたか? 64ビット整数に収まるか?それはできません。 20!限界です。 – paddy