이 글에서는 Java를 이용해 자연수의 합을 계산하는 방법을 단계별로 살펴봅니다. 먼저 자연수란 1부터 무한대까지의 모든 양의 정수를 의미한다는 점을 기억해 두세요.
문제 개요
간단한 입출력 예시로 문제를 먼저 이해해 보겠습니다.
입력
사용자가 아래와 같은 값을 입력했다고 가정합니다.
50과 100
출력
그렇다면 원하는 출력 결과는 다음과 같습니다.
50부터 100까지 자연수의 합은 3825입니다
알고리즘
프로그램의 전체적인 흐름은 다음과 같습니다.
STEP 1 - 시작 STEP 2 - 세 개의 정수 변수(my_lower_limit, my_upper_limit, sum)를 선언합니다. STEP 3 - 사용자에게 두 개의 정수 입력을 요청하거나, 값을 미리 정의합니다. STEP 4 - 입력값을 읽어 들입니다. STEP 5 - for 반복문을 돌며 시작 값부터 상한 값까지 차례대로 더하고, 합계를 변수에 저장합니다. STEP 6 - 결과를 화면에 출력합니다. STEP 7 - 종료
예제 1. Scanner로 사용자 입력 받아 계산하기
아래 예제는 java.util.Scanner 클래스를 사용해 사용자가 직접 시작 값과 마지막 값을 입력하도록 구현한 코드입니다. 온라인 컴파일러나 로컬 개발 환경에서 바로 실행해 볼 수 있습니다.
import java.util.Scanner;
public class NaturalNumbersSum {
public static void main(String[] args) {
int myLowerLimit, myUpperLimit, sum;
System.out.println("필요한 패키지가 임포트되었습니다.");
Scanner scanner = new Scanner(System.in);
System.out.println("Scanner 객체가 생성되었습니다.");
System.out.print("시작 숫자를 입력하세요: ");
myLowerLimit = scanner.nextInt();
System.out.print("마지막 숫자를 입력하세요: ");
myUpperLimit = scanner.nextInt();
sum = 0;
for (int i = myLowerLimit; i <= myUpperLimit; ++i) {
sum += i;
}
System.out.println(myLowerLimit + "부터 " + myUpperLimit + "까지 자연수의 합은 " + sum + "입니다.");
}
}
실행 결과
필요한 패키지가 임포트되었습니다. Scanner 객체가 생성되었습니다. 시작 숫자를 입력하세요: 50 마지막 숫자를 입력하세요: 100 50부터 100까지 자연수의 합은 3825입니다.
예제 2. 값이 미리 정의된 경우
이번에는 입력값을 코드 안에서 미리 정의해 두고 그 값을 그대로 사용해 합계를 구하는 방식입니다. 빠른 테스트나 학습 목적으로 간편하게 활용할 수 있습니다.
public class NaturalNumbersSum {
public static void main(String[] args) {
int myInput1, myInput2, sum;
myInput1 = 50;
myInput2 = 100;
sum = 0;
System.out.println("시작 숫자와 마지막 숫자는 각각 " + myInput1 + "과 " + myInput2 + "로 정의되어 있습니다.");
for (int i = myInput1; i <= myInput2; ++i) {
sum += i;
}
System.out.println(myInput1 + "부터 " + myInput2 + "까지 자연수의 합은 " + sum + "입니다.");
}
}
실행 결과
시작 숫자와 마지막 숫자는 각각 50과 100으로 정의되어 있습니다. 50부터 100까지 자연수의 합은 3825입니다.
참고: 등차수열 공식으로 더 빠르게 계산하기
반복문 대신 가우스의 등차수열 합 공식 n × (n + 1) / 2를 활용하면 반복 없이 한 번의 연산으로 결과를 얻을 수 있습니다. 범위가 매우 클 때 성능 차이가 크게 벌어지므로 실무에서 유용하게 쓸 수 있습니다.
long start = 50, end = 100; long result = (end * (end + 1)) / 2 - ((start - 1) * start) / 2; System.out.println(start + "부터 " + end + "까지 자연수의 합은 " + result + "입니다.");
이처럼 Java에서는 for 반복문이나 수학 공식을 활용해 손쉽게 자연수의 합을 구할 수 있습니다. 입력 방식과 범위의 크기에 따라 상황에 맞는 방법을 선택해 보세요.