정수 n이 주어졌을 때, 그 합이 완전제곱수(perfect square)가 되는 n개의 숫자를 찾아 출력하는 프로그램을 만들어야 합니다.
핵심 아이디어
가장 간단하고 확실한 방법은 첫 번째 홀수부터 시작하는 n개의 연속된 홀수를 출력하는 것입니다. 수학적으로 처음 n개의 홀수(1, 3, 5, 7, 9, ...)의 합은 항상 n²로 완전제곱수가 되기 때문입니다.
입력 : 5
출력 : 1 3 5 7 9
1+3+5+7+9 = 25, 즉 (5)²
알고리즘
START
Step 1 : 크기를 나타내는 매크로 SIZE(예: 5)를 선언하고 i를 1로 초기화
Step 2 : i <= SIZE 인 동안 반복
Step 2.1 -> (2*i)-1 값을 출력
Step 2.2 -> i를 1만큼 증가
Step 3 -> while 루프 종료
STOP
예제 코드 (C)
#include <stdio.h>
#define SIZE 5
int main() {
int i = 1;
while(i <= SIZE) {
printf("\n %d", ((2*i)-1));
i++;
}
}
실행 결과
위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다.
1
3
5
7
9
출력된 숫자들의 합은 1 + 3 + 5 + 7 + 9 = 25로, 정확히 5의 제곱(25)이라는 완전제곱수가 됩니다. 이처럼 k번째 홀수는 2k-1로 표현할 수 있으므로, 반복문에서 (2*i)-1 공식만 사용하면 어떤 n에 대해서도 손쉽게 조건을 만족하는 숫자들을 생성할 수 있습니다.