입력된 두 양의 정수의 공약수를 모두 출력하는 프로그램을 작성해 보자. (예를 들어 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 |