IT/솔루션) 난 정말C... 없다구요

16장. 실력 다지기 연습문제 02) 문제 3 [GCM, LCM]

돔찌 2019. 4. 16. 08:01

<2016. 9. 21. 22:46>

 

16장. 실력 다지기 연습문제 02) 문제 3 [GCM, LCM]

 

/*
프로그램 사용자로부터 두 개의 정수를 입력 받아서 최대 공약수(GCM)과 최소 공배수(LCM)을 계산하여 출력하는 프로그램을 작성하자.
단 아래의 조건을 모두 만족시켜야 한다.
- 자연수(양의 정수) 범위 내에서만 고려를 한다(자연수만 입력된다 가정)
- 최대 공약수를 계산하여 반환하는 함수를 다음과 같이 정의한다.
 int SimpleGCM(int num1, int num2) {.....}  // num1과 num2의 GCM 계산 //
- 최소 공배수를 계산하여 반환하는 함수를 다음과 같이 정의한다.
 int SimpleLCM(int num1, int num2) {.....}  // num1과 num2의 LCM 계산 //
*/
#include<stdio.h>
#include<stdlib.h>
#pragma warning(disable : 4996)
int SimpleGCM(int num1, int num2);
int SimpleLCM(int num1, int num2);
int main(void) {
	int num1;
	int num2;
	printf(" 두 개의 정수를 입력하시오. : ");
	scanf("%d %d", &num1, &num2);
	printf("최대공약수는 %d 입니다.\n", SimpleGCM(num1, num2));
	printf("최소공배수는 %d 입니다.\n", SimpleLCM(num1, num2));
	system("pause");
	return 0;
}
int SimpleGCM(int num1, int num2) {
	int i;
	int Bignum;
	int GCM;
	if (num1 > num2)
	  Bignum = num1; else
	  Bignum = num2;
	for (i = 1; i <= Bignum; i++) {
		if (num1%i == 0 && num2%i == 0)
		   GCM = i;
	}
	return GCM;
}
int SimpleLCM(int num1, int num2) {
	int i;
	for (i = 3; i <= num1*num2; i++) {
		if (i%num1 == 0 && i%num2 == 0) {
			break;
		}
	}
	return i;
}