public class Jiecheng {
/**
* 实现1...100的阶乘,使用int类型
* @param args
*/
public static void main(String[] args) {
int n;
//确保保存最终运算结果的 数组足够大
int[] a = new int[9000];
//位数
int digit = 1;
//与临时结果某位的乘积结果
int temp;
int i,j,carry;//carry 进位
/**
* printf("please in put n:\n");
* scanf("%d",n);
*/
a[0] = 1;
for(i=2;i<=100;i++) {
//阶乘元素从2开始
//将临时结果的每位与阶乘元素相乘
for(j=1,carry=0;j<=digit;j++) {
temp = a[j-1]*i+carry;
a[j-1] = temp % 10;//个位
//看是否有进位
carry = temp / 10;
}
while(carry>0) {
//123*123 每位相乘后,相加后 比如最后 得到进位 16,增加两位,分别是1,6
a[++digit-1] = carry % 10;
carry = carry / 10;//看还能不能进位
}
}
for(j=digit;j>=1;j--) {
System.out.print(a[j-1]);
}
}
}
int类型 实现1到100的阶乘
最新推荐文章于 2022-01-31 23:09:40 发布