본문 바로가기
공부자료/자바

두자리이상의 두 수를 각각 입력받아 최대공약수를 구함

by MIS경영정보 2010. 12. 27.
반응형


class Fraction{
  private int numerator;
  private int denominator;

       Fraction(int num, int denom){
   numerator=num;
    denominator=denom;
      }
    private int gcd(int x, int y){        //유클리드 호제법을 이용한 최대공약수 구하기
   return (y!=0) ? gcd(y,x%y) : x;
  }


   private Fraction reduce(Fraction f){
   int divisor;
   divisor = gcd(f.numerator, f.denominator);

   f.numerator = divisor;
   f.denominator = divisor;
   return f;
  }

     public Fraction add(Fraction f){
   numerator = numerator;
   denominator = denominator;
   return reduce(this);
      }
 
  
        public String toString(){
     String form = numerator+"";
     return form;
         }

   }

public class FractionTest{

      static int readInt() throws java.io.IOException{
   char ch;
   int n=0;

     while(!Character.isDigit(ch=(char)System.in.read()));
     do{ n=n*10+(ch-'0');
     ch=(char)System.in.read();
     }while (Character.isDigit(ch));
     return n;
   }

 


 
 public static void main(String[] args)throws java.io.IOException{

  int a;
  int b;

  System.out.print("두수를 입력해주세요 : ");
  a = readInt(); b = readInt();

  Fraction f1 = new Fraction(a,b);
  Fraction f2 = new Fraction(a,b);

 
  f1 = f1.add(f2);
  System.out.println("최대공약수는 " + f1 + "입니다");
 }
}

댓글