2013년 8월 13일 화요일

[java algorithm, 자바교육]자바 유클리드 호제법(나누기이용)

방법2 : 나누면서 최대 공약수 구하기


오라클자바커뮤니티에서 설립한 오엔제이프로그래밍 실무교육센터
(신입사원채용무료교육, 오라클SQL, 튜닝, 힌트,자바프레임워크, 안드로이드, 아이폰, 닷넷)  



순서(18과 24의 최대공약수 구하기)
1. 24를 18로 나눈 나머지인 6이 0인가?
2. 0이 아니면 나머지인 6과 작은수(제수, 18)를 두수로 하여…
3. 18과6을 나눈 나머지가 0인가 조사… 0이면 이때의 제수인 6이 최대공약수 이다.

public class Gcd2 {
int  gcd(int v1, int v2) {
int tmp;
while(v1 != 0) { //나머지가 0이 아닌한 반복
if (v1 < v2) {
tmp = v1;
v1 = v2;
v2 = tmp;
}
          v1 = v1 % v2;  //v1은 큰수, v2는 작은수, 작은수는 다시 사용된다.
}
return v2;

}
public static void main(String[] args) {
    if (args.length!=2) {
              System.out.println("최대공약수를 구하기 위한 두수 입력... ");
System.out.println("Usage : java Gcd1 number number ");
System.exit(1);
  }

  int value1 = Integer.parseInt(args[0]);
  int value2 = Integer.parseInt(args[1]);
  Gcd1 o = new Gcd1();
  int g = o.gcd(value1, value2);
  System.out.println(value1 + "과  " + value2 + "의 최대공약수는 : " + g);
  }
}

댓글 없음:

댓글 쓰기