자연수(natural number)란 1부터 시작하는 양의 정수를 의미합니다.
자연수의 나열은 다음과 같습니다.
1, 2, 3, 4, 5, 6, 7, 8, 9, 10……
처음 n개의 자연수 합은 for 루프를 이용하거나 수학 공식을 이용하는 두 가지 방법으로 계산할 수 있습니다. 각각의 방법을 사용한 C++ 프로그램을 아래에서 소개합니다.
방법 1: for 루프를 사용한 자연수의 합
for 루프를 반복 실행하면서 각 숫자를 누적하는 방식입니다. n개의 자연수 합을 계산하는 프로그램은 다음과 같습니다.
예제
#include<iostream>
using namespace std;
int main() {
int n=5, sum=0, i;
for(i=1;i<=n;i++)
sum=sum+i;
cout<<"Sum of first "<<n<<" natural numbers is "<<sum;
return 0;
}실행 결과
Sum of first 5 natural numbers is 15
위 프로그램에서는 for 루프가 1부터 n까지 반복 실행됩니다. 루프가 한 번 돌 때마다 변수 i의 값이 sum에 더해지므로, 루프가 끝나면 처음 n개 자연수의 총합이 구해집니다. 핵심 로직은 아래 코드 조각과 같습니다.
for(i=1;i<=n;i++) sum=sum+i;
방법 2: 수학 공식을 사용한 자연수의 합
루프 없이 등차수열의 합 공식을 활용하면 더 효율적으로 계산할 수 있습니다. 처음 n개 자연수의 합을 구하는 공식은 다음과 같습니다.
sum = n(n+1)/2
이 공식을 적용한 프로그램은 다음과 같습니다.
예제
#include<iostream>
using namespace std;
int main() {
int n=5, sum;
sum = n*(n+1)/2;
cout<<"Sum of first "<<n<<" natural numbers is "<<sum;
return 0;
}실행 결과
Sum of first 5 natural numbers is 15
위 프로그램에서는 공식 n*(n+1)/2를 사용해 처음 n개 자연수의 합을 한 번의 연산으로 계산한 뒤 결과를 출력합니다. 해당 부분의 코드는 다음과 같습니다.
sum = n*(n+1)/2; cout<<"Sum of first "<<n<<" natural numbers is "<<sum;
두 방법의 비교
for 루프 방식은 직관적이고 로직 흐름을 이해하기 쉬운 반면, n이 커질수록 반복 횟수가 늘어나 시간이 오래 걸립니다(시간 복잡도 O(n)). 반면 공식을 사용하면 단 한 번의 연산으로 결과를 얻을 수 있어 매우 큰 n값에도 효율적입니다(시간 복잡도 O(1)). 상황에 맞게 적절한 방법을 선택하면 됩니다.