본문 바로가기
Algorithm

탐구활동 2

by Edward Agape Kim 2023. 4. 7.

 입력된 두 양의 정수의 공약수를 모두 출력하는 프로그램을 작성해 보자. (예를 들어 8 24와 같이, 두 개의 양의 정수가 입력되었을 때에는 1 2 4 8이 출력되어야 한다.)

 

해설

더보기

 두 정수를 받을 때 각 변수를 a, b라 하자. 이때 일반성을 잃지 않고 a≤b라고 가정하면 반복문을 1부터 a까지 돌리면서(이때 해당하는 값을 i라 하자.) 0 ≡ i (mod a), 0 ≡ i (mod b)를 만족하는 i를 모두 출력하면 된다. (∵ a보다 큰 값에 대해서는 a의 약수에 해당하는 수가 존재하지 않기 때문에 반복문을 1부터 a까지만 돌려줘도 된다.)

  하지만 a<b라는 가정이 항상 만족하는 것이 아니므로 이를 만족하기 위해서 a>b이면 a와 b의 값을 swap 해주는 코드도 작성한다.

 

코드

더보기
#include <iostream>

using namespace std;

int f_swap(int a, int b)
{
	int tmp;
	
	tmp = a;
	a = b;
	b = tmp;
}

int main()
{
	int a, b;
	scanf("%d %d", &a, &b);
	
	if(a>b) f_swap(a, b);
	
	for(int i=1; i<=a; i++){
		if(a%i==0 and b%i==0) printf("%d ", i);
	}
	
	return 0;
}

'Algorithm' 카테고리의 다른 글

Edmonds-Karp  (2) 2023.08.29
memoization 기법을 이용한 피보나치 수열  (0) 2023.06.26
탐구 활동 1  (0) 2023.04.07
숫자 뒤집기(S)  (0) 2023.04.04
BOJ 2477  (0) 2023.04.03