짝수의 제곱수란 짝수를 제곱하여 얻은 값들을 말합니다. 예를 들면 다음과 같습니다.
22, 42, 62, 82, …
= 4, 16, 36, 64, 100, …
알고리즘
시작
1단계: 두 개의 변수 a와 n을 선언한다
2단계: 실행 시점에 숫자 n을 입력받는다
3단계: for 루프를 사용하여 제곱수를 출력한다
a=2부터 시작하며, 조건식은 a*a<=n, 증감식은 a+=2이다
조건이 만족되는 동안 루프가 계속되며 a*a를 출력한다
종료프로그램 1: 짝수 제곱수 출력
다음 프로그램은 사용자로부터 n을 입력받아, 1부터 n 사이에 존재하는 모든 짝수의 제곱수를 출력합니다.
#include<stdio.h>
int main(){
int a,n;
printf("enter a number for n:");
scanf("%d",&n);
for(a=2;a*a<=n;a+=2) // 1과 n 사이의 짝수 제곱수를 출력{
printf("%d\n",a*a);
}
return 0;
}실행 결과
enter a number for n:200 4 16 36 64 100 144 196
n에 200을 입력하면 200 이하의 짝수 제곱수인 4(2²), 16(4²), 36(6²), 64(8²), 100(10²), 144(12²), 196(14²)가 차례대로 출력됩니다.
프로그램 2: 짝수 세제곱수 출력
같은 원리를 응용하면 1부터 n 사이의 짝수 세제곱수도 쉽게 구할 수 있습니다. 조건식과 출력문에서 곱셈 횟수만 하나 늘려주면 됩니다.
#include<stdio.h>
int main(){
int a,n;
printf("enter a number for n:");
scanf("%d",&n);
for(a=2;a*a*a<=n;a+=2){
printf("%d\n",a*a*a);
}
return 0;
}실행 결과
enter a number for n:300 8 64 216
n에 300을 입력하면 300 이하의 짝수 세제곱수인 8(2³), 64(4³), 216(6³)이 출력됩니다.
핵심 정리
이 프로그램의 핵심은 루프 변수 a를 2부터 시작하고 2씩 증가시켜(a+=2) 짝수만 순회한다는 점입니다. 또한 반복 조건을 a*a<=n(또는 a*a*a<=n)으로 설정하면, 미리 제곱근을 계산하지 않고도 n을 초과하지 않는 범위 내에서만 반복할 수 있어 코드가 간결해집니다.