Sena's garden
[백준/C언어] 5086번: 배수와 약수 본문
문제
4 × 3 = 12이다.
이 식을 통해 다음과 같은 사실을 알 수 있다.
3은 12의 약수이고, 12는 3의 배수이다.
4도 12의 약수이고, 12는 4의 배수이다.
두 수가 주어졌을 때, 다음 3가지 중 어떤 관계인지 구하는 프로그램을 작성하시오.
- 첫 번째 숫자가 두 번째 숫자의 약수이다.
- 첫 번째 숫자가 두 번째 숫자의 배수이다.
- 첫 번째 숫자가 두 번째 숫자의 약수와 배수 모두 아니다.
입력: 입력은 여러 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 10,000이 넘지않는 두 자연수로 이루어져 있다. 마지막 줄에는 0이 2개 주어진다. 두 수가 같은 경우는 없다.
출력: 각 테스트 케이스마다 첫 번째 숫자가 두 번째 숫자의 약수라면 factor를, 배수라면 multiple을, 둘 다 아니라면 neither를 출력한다.
코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
int first, second;
while (1) {
scanf("%d %d", &first, &second);
if (first == 0 && second == 0) {
return 0;
}
if (second % first == 0) {
printf("factor\n");
}
else if (first % second == 0) {
printf("multiple\n");
}
else {
printf("neither\n");
}
}
return 0;
}
계속해서 숫자를 입력받을 first와 second를 scanf를 통해 초기화한다. first와 second 둘 모두 0이 된 순간 프로그램을 종료시킬 것이기 때문에 while문 안에서 if문을 통해 first와 second 모두 0이 될 경우 return 0을 해준다. if~else if~else문에서는 각 숫자들이 약수인지, 배수인지, 아니면 둘 모두 아닌지 판단한다. 문제에서 first와 second는 같지 않은 수라고 했으므로 if문의 조건을 이용해 first가 second의 약수인 경우를 나타낸다. 배수의 경우 first와 second의 위치만 바꿔주면 되기 때문에 else if문의 조건을 이용해 배수인 경우를 찾는다. 이 둘 모두에 포함되지 않는 경우에는 else를 이용해 둘 모두에 포함되지 않음을 출력해주면 이 문제는 쉽게 해결할 수 있다.
'백준 > C언어' 카테고리의 다른 글
| [백준/C언어] 9506번: 약수들의 합 (0) | 2024.08.24 |
|---|---|
| [백준/C언어] 2501번: 약수 구하기 (0) | 2024.08.23 |
| [백준/C언어] 1193번: 분수 찾기 (0) | 2024.08.21 |
| [백준/C언어] 2903번: 중앙 이동 알고리즘 (0) | 2024.08.20 |
| [백준/C언어] 2720번: 세탁소 사장 동혁 (0) | 2024.08.19 |