소개
이 랩에서는 재귀 (recursion) 를 사용하여 두 숫자의 LCM (최소 공배수, Least Common Multiple) 을 구하는 C 프로그램을 작성합니다. LCM 은 두 숫 모두로 나누어 떨어지고 나머지가 없는 가장 작은 양의 정수입니다.
이 랩에서는 재귀 (recursion) 를 사용하여 두 숫자의 LCM (최소 공배수, Least Common Multiple) 을 구하는 C 프로그램을 작성합니다. LCM 은 두 숫 모두로 나누어 떨어지고 나머지가 없는 가장 작은 양의 정수입니다.
프로그래밍을 시작하기 전에 LCM 의 개념을 이해해 봅시다. 두 정수의 LCM 은 두 숫자 모두의 배수인 가장 작은 양의 정수입니다. 두 숫자의 LCM 을 찾기 위해 다음 공식을 사용할 수 있습니다.
LCM = (number1 * number2) / GCD
여기서 number1과 number2는 LCM 을 구해야 하는 두 숫자이고, GCD 는 두 숫자의 최대 공약수 (Greatest Common Divisor) 입니다.
프로그램을 작성할 ~/project/ 디렉토리에 main.c라는 새 C 파일을 생성해 보겠습니다.
다음 코드를 복사하여 main.c 파일에 붙여넣으세요.
#include<stdio.h>
int find_lcm(int, int); // function prototype declaration
int main()
{
int a, b, lcm;
printf("Enter two integers to find LCM:\n");
scanf("%d %d", &a, &b);
lcm = find_lcm(a, b); // function call
printf("LCM of %d and %d is %d.\n", a, b, lcm);
return 0;
}
int find_lcm(int a, int b) // function definition
{
static int temp = 1;
if(temp % a == 0 && temp % b == 0)
return temp;
else
{
temp++;
find_lcm(a, b);
return temp;
}
}
main.c 파일을 저장하고 터미널에서 다음 명령을 사용하여 프로그램을 컴파일합니다.
gcc main.c -o main
다음 명령을 사용하여 프로그램을 실행합니다.
./main
프롬프트가 표시되면 두 개의 정수를 입력하면 프로그램이 두 숫자의 LCM(최소 공배수) 을 표시합니다.
방금 작성한 코드를 이해해 봅시다.
#include<stdio.h>를 사용하여 표준 입출력 라이브러리를 프로그램에 포함시킵니다.find_lcm 함수 프로토타입을 선언합니다. 이는 find_lcm 함수를 실제 정의 전에 main 함수에서 호출하기 때문에 필요합니다.a, b, lcm을 선언합니다.printf를 사용하여 사용자에게 두 개의 정수를 입력하라는 메시지를 표시하고 scanf를 사용하여 입력을 받습니다.find_lcm 함수를 호출하고 a와 b를 인수로 전달합니다.find_lcm 함수는 두 개의 정수 인자 a와 b를 받아 재귀 (recursion) 를 사용하여 두 숫자의 LCM(최소 공배수) 을 반환합니다.temp 변수를 1 로 초기화합니다. 이 변수는 static 으로 선언됩니다.temp가 a와 b의 배수인지 확인합니다.temp를 LCM 으로 반환합니다.temp를 증가시키고 LCM 을 찾을 때까지 find_lcm 함수를 재귀적으로 호출합니다.다양한 입력 값으로 프로그램을 테스트하고 올바른 LCM(최소 공배수) 출력을 생성하는지 확인합니다.
다음은 재귀를 사용하여 두 숫자의 LCM(최소 공배수) 을 구하는 C 프로그램의 전체 코드입니다.
#include<stdio.h>
int find_lcm(int, int); // 함수 프로토타입 선언
int main()
{
int a, b, lcm;
printf("LCM 을 찾기 위해 두 정수를 입력하세요:\n");
scanf("%d %d", &a, &b);
lcm = find_lcm(a, b); // 함수 호출
printf("%d와 %d의 LCM 은 %d입니다.\n", a, b, lcm);
return 0;
}
int find_lcm(int a, int b) // 함수 정의
{
static int temp = 1;
if(temp % a == 0 && temp % b == 0)
return temp;
else
{
temp++;
find_lcm(a, b);
return temp;
}
}
이 랩에서는 재귀를 사용하여 두 숫자의 LCM(최소 공배수) 을 구하는 C 프로그램을 작성하는 방법을 배웠습니다. 재귀 함수를 사용하여 LCM 을 구하고 프로그램의 각 단계를 자세히 설명했습니다. 또한 터미널을 사용하여 C 프로그램을 컴파일하고 실행하는 방법도 배웠습니다.