[백준] 5086번 - 배수와 약수 C++

문제
4 × 3 = 12이다.
이 식을 통해 다음과 같은 사실을 알 수 있다.
3은 12의 약수이고, 12는 3의 배수이다.
4도 12의 약수이고, 12는 4의 배수이다.
두 수가 주어졌을 때, 다음 3가지 중 어떤 관계인지 구하는 프로그램을 작성하시오.
1. 첫 번째 숫자가 두 번째 숫자의 약수이다.
2. 첫 번째 숫자가 두 번째 숫자의 배수이다.
3. 첫 번째 숫자가 두 번째 숫자의 약수와 배수 모두 아니다.
입력
입력은 여러 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 10,000이 넘지않는 두 자연수로 이루어져 있다. 마지막 줄에는 0이 2개 주어진다. 두 수가 같은 경우는 없다.
출력
각 테스트 케이스마다 첫 번째 숫자가 두 번째 숫자의 약수라면 factor를, 배수라면 multiple을, 둘 다 아니라면 neither를 출력한다.

풀기 전 로직 생각
  1. 두 수를 입력받을 num1, num2를 int형으로 받는다.
  2. 여러 테스트 케이스로 이루어져있고 마지막은  0 0이므로 반복문을 항상 true로 해주고 두 수를 0 0 일때 반복문을 끝낸다.
  3. 약수를 판별하는 방법은 큰 수에서 작은수를 나눴을때 나머지가 0일때 약수이다. 그러므로 num2를 num1로 나눈 나머지가 0이면 factor를 출력.
  4. 배수는 첫번째 숫자가 두번째숫자의 배수일때니까 첫번째 숫자가 크다는 것이므로 num1을 num2로 나눈 나머지가 0이면 multiple를 출력
  5. 둘다 아니면 neigher를 출력시킨다.
코드
#include <iostream>
using namespace std;

int main(){
	int num1, num2; //입력받을 두 수
	
	while (1) {
		cin >> num1 >> num2;

		if(num1 == 0 && num2 ==0)
			return 0;
		else if (num2 % num1 == 0)
			cout << "factor" << "\n";
		else if (num1 % num2 == 0)
			cout << "multiple" << "\n";
		else
			cout << "neither" << "\n";

	}
}
결과

 

끝 히힛