본문 바로가기

Dev. Etc/Algorithm

[JAVA] 최소공배수&최대공약수 구하기 문제

 

 

 

 

Q. 두수의 최소 공배수와 최대 공약수를 구하는 프로그램을 작성하라.
* 최소공배수 = 공배수 중에서 가장 작은 정수
* 최대공약수 = 공약수 중에서 가장 큰 수

 



아래 답있습니다 !

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(for문 사용)

package test;

import java.util.Scanner;
public class Quiz {
	public static void main(String[] args){
		Scanner input = new Scanner(System.in);
		int num1, num2, max=0, min=0, i=2;
		System.out.print("두 수 입력 : ");
		num1 = input.nextInt();
		num2 = input.nextInt();
		for(;i<=num1 && i<=num2;){
			if(num1%i==0&&num2%i==0)
					min=i;
				i++;
		}
		max=num1*num2/min;	//최소 공배수 구하는 식
		System.out.println("최소 공배수 : "+max);
		System.out.println("최대 공약수 : "+min);
	}
}

 

 

 

 

 

 

(While문사용)

package test;

import java.util.Scanner;
public class Quiz {
	public static void main(String[] args){
		Scanner input = new Scanner(System.in);
		int num1, num2, max=0, min=0, i=2;
		System.out.print("두 수 입력 : ");
		num1 = input.nextInt();
		num2 = input.nextInt();

		while(i<=num1&&i<=num2){
			if(num1%i==0&&num2%i==0)
					min=i;
				i++;
		}
		max=num1*num2/min;	//최소 공배수 구하는 식
		System.out.println("최소 공배수 : "+max);
		System.out.println("최대 공약수 : "+min);
	}

또한, 아래 소스로 풀으셔도 상관없습니다.

package day04;

import java.util.Scanner;

public class Quiz10 {

	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		int big, small;
		int GCM, LCM;
		int mok, na;
		
		System.out.print("첫번째 수 입력 > ");
		int first = input.nextInt();
		System.out.print("두번째 수 입력 > ");
		int second = input.nextInt();
		if(first >= second) {
			big = first;
			small = second;
		}else {
			big = second;
			small = first;
		}
		while(true) {
			mok = big/small; 
			na = big-mok*small; 
			
			if(na==0) {
				GCM = small; 
				LCM = (first*second)/GCM;  
				System.out.println("최대공약수: "+GCM);
				System.out.println("최소공배수: "+LCM);
				break;
			}
			big = small; 
			small = na;
		}
	}

}