반응형
자바로 0에서 100까지 숫자의 팩토리얼 값을 구하는 소스입니다.
작은 숫자라도 팩토리얼 값을 구하면 어마어마한 숫자가 나오기 때문에, 자바의 long 형 즉 64비트 정수로는 팩토리얼 값을 제대로 담을 수가 없습니다.
그래서 사실상 무한대의 정수를 저장할 수 있는 BigInteger 를 사용합니다.
소스 파일명: Foo.java
factorial()이라는 메소드(함수)에서 팩토리얼을 계산하여 반환합니다.
BigInteger.ONE 은 1이라는 뜻입니다.
multiply 는 곱하기라는 뜻이고,
BigInteger.valueOf(i) 이것은, int(32비트 정수)인 i의 값을 BigInteger 로 변환하는 것입니다.
컴파일 및 실행 결과 화면:
(숫자가 너무 커서 일부만 실었습니다.)
위와 같이 나옵니다. (0! 은 1 로 간주됨)
출력 결과에는 100까지 나오지만 숫자가 너무 크기에 모두 표현하기 힘듭니다. 다음 게시물에 100까지의 모든 결과가 있습니다: ▶▶ 수학] 팩토리얼 계산 표; Factorial Table 1~100 (0에서 100)까지 계승(階乘)
▶▶ 팩토리얼 구하기(Factorial) 프로그램 소스, 팩토리얼(계승)이란? [수학
BigInteger 로 거대 정수 사칙연산하는 법: ▶▶ Java/자바] 거대 무한 정수 사칙연산, BigInteger 클래스 사용 법; Big Int Plus Minus
자바 강좌와 각종 예제 ☞ 자바(Java)
작은 숫자라도 팩토리얼 값을 구하면 어마어마한 숫자가 나오기 때문에, 자바의 long 형 즉 64비트 정수로는 팩토리얼 값을 제대로 담을 수가 없습니다.
그래서 사실상 무한대의 정수를 저장할 수 있는 BigInteger 를 사용합니다.
팩토리얼 값 얻기 예제: factorial Method Example
소스 파일명: Foo.java
import java.math.BigInteger;
public class Foo {
public static void main(String[] args) {
for (int i = 0; i <= 100; i++)
System.out.format("%3d! = %d%n", i, factorial(i));
}
public static BigInteger factorial(int n) {
BigInteger fac = BigInteger.ONE;
for (int i = 1; i <= n; i++)
fac = fac.multiply(BigInteger.valueOf(i));
return fac;
}
}
public class Foo {
public static void main(String[] args) {
for (int i = 0; i <= 100; i++)
System.out.format("%3d! = %d%n", i, factorial(i));
}
public static BigInteger factorial(int n) {
BigInteger fac = BigInteger.ONE;
for (int i = 1; i <= n; i++)
fac = fac.multiply(BigInteger.valueOf(i));
return fac;
}
}
factorial()이라는 메소드(함수)에서 팩토리얼을 계산하여 반환합니다.
BigInteger.ONE 은 1이라는 뜻입니다.
multiply 는 곱하기라는 뜻이고,
BigInteger.valueOf(i) 이것은, int(32비트 정수)인 i의 값을 BigInteger 로 변환하는 것입니다.
컴파일 및 실행 결과 화면:
(숫자가 너무 커서 일부만 실었습니다.)
D:\Z>javac Foo.java && java Foo
0! = 1
1! = 1
2! = 2
3! = 6
4! = 24
5! = 120
6! = 720
7! = 5040
8! = 40320
9! = 362880
10! = 3628800
11! = 39916800
12! = 479001600
13! = 6227020800
14! = 87178291200
15! = 1307674368000
16! = 20922789888000
17! = 355687428096000
18! = 6402373705728000
19! = 121645100408832000
20! = 2432902008176640000
...
이하 별첨
0! = 1
1! = 1
2! = 2
3! = 6
4! = 24
5! = 120
6! = 720
7! = 5040
8! = 40320
9! = 362880
10! = 3628800
11! = 39916800
12! = 479001600
13! = 6227020800
14! = 87178291200
15! = 1307674368000
16! = 20922789888000
17! = 355687428096000
18! = 6402373705728000
19! = 121645100408832000
20! = 2432902008176640000
...
이하 별첨
위와 같이 나옵니다. (0! 은 1 로 간주됨)
출력 결과에는 100까지 나오지만 숫자가 너무 크기에 모두 표현하기 힘듭니다. 다음 게시물에 100까지의 모든 결과가 있습니다: ▶▶ 수학] 팩토리얼 계산 표; Factorial Table 1~100 (0에서 100)까지 계승(階乘)
▶▶ 팩토리얼 구하기(Factorial) 프로그램 소스, 팩토리얼(계승)이란? [수학
BigInteger 로 거대 정수 사칙연산하는 법: ▶▶ Java/자바] 거대 무한 정수 사칙연산, BigInteger 클래스 사용 법; Big Int Plus Minus
자바 강좌와 각종 예제 ☞ 자바(Java)