unsigned long long类型是目前C语言中精度最高的数据类型,可以用来表示20以内的阶乘数据,20以外的自测。
还有是unsigned long long的精度64位,double或者long double 虽然也占有8个字节,但是他们的实际精度只有53位。
#include <stdio.h>
#include <math.h>
unsigned long long jiecheng(int a);
int main()
{
unsigned long long m;
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
m=jiecheng(i);
printf("%-4d%-20llu\n",i,m);
}
return 0;
}
unsigned long long jiecheng(int a)
{
unsigned long long sum=1;
for(int i=2;i<=a;i++){
sum=i*sum;
}
return sum;
}