求Java写的100的阶乘
解决时间 2021-07-21 06:06
- 提问者网友:回忆在搜索
- 2021-07-20 14:10
求Java写的100的阶乘
最佳答案
- 五星知识达人网友:迟山
- 2021-07-20 14:15
100的阶乘int是存不了的,要用大数类:
import java.math.BigDecimal;
public class Test {
public static void main(String args[]){
BigDecimal result= new BigDecimal(1);
for(int i=1;i<=100;i++){
BigDecimal i_value= new BigDecimal(i);
result = result.multiply(i_value);
}
System.out.println("result="+result);
}
}
全部回答
- 1楼网友:神也偏爱
- 2021-07-20 19:06
import java.math.BigInteger;
public class Test {
public static void main(String[] args) {
BigInteger x = factorial(30);
System.out.println(x);
}
public static BigInteger factorial(int num) {
if(num < 0) {
throw new IllegalArgumentException("num must be signless integral.");
}
if(num < 2) {
return BigInteger.ONE;
}
// 小于等于 12 时可以使用 int 进行计算
if(num <= 12) {
return intFractorial(num);
}
// 小于等于 20 时可以使用 long 进行计算
if(num <= 20) {
return longFractorial(num);
}
// 大于 20 时需要采用 BigInteger 进行计算
return bigIntegerFactorial(num);
}
private static BigInteger intFractorial(int num) {
int result = 1;
while(num > 0) {
result *= num--;
}
return BigInteger.valueOf(result);
}
private static BigInteger longFractorial(int num) {
long result = 1L;
while(num > 0) {
result *= num--;
}
return BigInteger.valueOf(result);
}
private static BigInteger bigIntegerFactorial(int num) {
BigInteger result = longFractorial(20);
while(num > 20) {
result = result.multiply(BigInteger.valueOf(num--));
}
return result;
}
}
- 2楼网友:人间朝暮
- 2021-07-20 18:04
用我这个吧,用大整数类型才可以处理这么大的整数。
import java.math.BigInteger;
public class Test {
public static void main(String[] args) {
BigInteger sum=new BigInteger("1");
for(int i = 1; i <= 100; i++) {
sum=sum.multiply(new BigInteger(String.valueOf(i)));
}
System.out.println(sum);
}
}
- 3楼网友:舊物识亽
- 2021-07-20 16:25
class Test{
public static void main(String argds[]){
int a[] = new int[100];
int sum=1;
for(int i=0;i<a.length;i++){
a[i] = i+1; //给数组复制,从1到100
}
for(int j=0;j<a.length;j++){
sum = sum*a[j]; //计算阶乘
}
}
}
计算其他值的阶乘,只要把定义数组里面的100换成其他值就好了。
- 4楼网友:一把行者刀
- 2021-07-20 16:00
这个很简单啊,一个循环语句就行了,给你个思路。
sum=sum*i
- 5楼网友:痴妹与他
- 2021-07-20 15:31
public class Factorial {
public static void main(String[] args) {
int total = 1;
for(int i = 1; i <= 100; i++)
total = total*i;
System.out.println(total);
}
}
我要举报
大家都在看
推荐资讯