このメソッドで階乗を計算します:
unsigned long long factorial(int n){
unsigned long long temp = 1L;
for(int i = 0 ; i < n ; i++){
temp *=(n - i);
}
printf("\n%d factorial is %llu",n,temp);
return temp;
}
までしか計算でき20!
ません。
20! = 2432902008176640000 << 2^64
21! = 51090942171709440000 >> 2^64
私は他のいくつかのSO記事を使用uintmax_t
したり読んだりしたことがありませんが、使用するのは本当に複雑です。誰かがそれらを使用して印刷する方法としていくつかの簡単なスニペットを与えることができれば、それは大きな助けになるでしょう.
編集ディディエ・トロセットの質問に関して、Cで階乗を計算できる限界は確かに20ではないと思いました。だから使いたかった。
また、C の大きな int ライブラリについても知りませんでした。重複した投稿を作成した場合は申し訳ありません。