English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Java 기본 튜토리얼

Java 흐름 제어

Java 배열

Java 동적 객체(I)

Java 동적 객체(II)

Java 동적 객체(III)

Java 예외 처리

Java 리스트(List)

Java Queue(큐)

Java Map 집합

Java Set 집합

Java 입력출력(I/O)

Java Reader/Writer

Java 다른 주제

Java 프로그램이 숫자의 팩토리얼을 찾습니다

Java 예제 모든 것

이 프로그램에서는 Java의 for와 while 루프를 사용하여 숫자의 팩토리얼을 찾는 방법을 배웁니다.

정수의 팩토리얼은 다음과 같이 n으로 주어집니다:

n의 팩토리얼 (n!) = 1 * 2 * 3 * 4 * ... * n

예제1for 루프를 사용하여 숫자의 팩토리얼을 찾기

public class Factorial {
    public static void main(String[] args) {
        int num = 10;
        long factorial = 1;
        for(int i = 1; i <= num; ++i)
        {
            // factorial = factorial * i;
            factorial *= i;
        }
        System.out.printf("%d의 팩토리얼 = %d", num, factorial);
    }
}

이 프로그램을 실행할 때, 출력은 다음과 같습니다:

n의 팩토리얼 10 = 3628800

이 프로그램에서는 for 루프를 사용하여 순회했습니다.1주어진 숫자 num(10) 사이의 모든 숫자, 각 숫자의 num까지의 곱셈을 계산하여 변수 factorial에 저장합니다.

팩토리얼의 큰 결과를 저장하기 위해 long 대신 int를 사용하지만, 여전히 크기가 충분하지 않아 더 큰 숫자의 값을 저장할 수 없습니다. 예를 들어(100의 팩토리얼)

long 변수에 저장할 수 없는 결과에 대해, java.math 라이브러리에서 선언된 BigInteger 변수를 사용합니다.

예제2BigInteger를 사용하여 숫자의 팩토리얼을 찾기

import java.math.BigInteger;
public class Factorial {
    public static void main(String[] args) {
        int num = 30;
        BigInteger factorial = BigInteger.ONE;
        for(int i = 1; i <= num; ++i)
        {
            // factorial = factorial * i;
            factorial = factorial.multiply(BigInteger.valueOf(i));
        }
        System.out.printf("%d의 팩토리얼 = %d", num, factorial);
    }
}

이 프로그램을 실행할 때, 출력은 다음과 같습니다:

30의 팩토리얼 = 265252859812191058636308480000000

이곳에서는 BigInteger를 long 대신 사용하여 팩토리얼을 저장합니다.

때문에*BigInteger와 함께 사용할 수 없기 때문에, 이 제품에 대해 multiply()를 사용합니다. 또한, num은 강제로 BigInteger로 변환하여 곱셈을 수행해야 합니다.

기본적으로*BigInteger와 함께 사용할 수 없으므로, 계산에 대해 multiply()를 사용합니다. 또한, num은 곱셈 연산을 위해 BigInteger로 변환되어야 합니다.

또한, 이 문제를 해결하기 위해 while 루프를 사용할 수도 있습니다.

예제3:while 루프를 사용하여 숫자의 인과식을 찾기

public class Factorial {
    public static void main(String[] args) {
        int num = 5, i = 1;
        long factorial = 1;
        while(i <= num)
        {
            factorial *= i;
            i++;
        }
        System.out.printf("%d의 인과식  = %d", num, factorial);
    }
}

이 프로그램을 실행할 때, 출력은 다음과 같습니다:

5 의 인과식  = 120

위의 프로그램에서 for 루프와 달리, 반복 내에서 i의 값을 증가시켜야 합니다.

두 프로그램 모두 기술적으로 올바르지만, 이 경우 for 루프를 사용하는 것이 더 좋습니다. 이는 반복 횟수(최대 num)가 이미 알려져 있기 때문입니다.

Java 예제 모든 것