20!的阶乘值超过了int 32bit的数值范围,但是在long long 64bit的范围内。
#include <stdio.h>int main() {
long long a = 1
for (int i = 2 i <= 20 ++i) {
a *= i
}
printf("%lld\n",a)
return 0
}
如果在大一些,long long也不行了,需要用大整数乘法,这样你就需要考虑用别人实现的大整数乘法库什么的了。Java有BigInteger的支持,专门处理这种问题