輸入兩個正整數m和n,求其最大公約數和最小公倍數

題目:輸入兩個正整數m和n,求其最大公約數和最小公倍數。
程序分析:利用嗅探法,一個一個數的去試探循環找到符合條件的值。
最小公倍數:兩個數公有的最小倍數
最大公約數:兩個數公有的最大約數(都能被整除的數)

class  MinDivisor_MaxCommonMultiple{
//輸入兩個正整數m和n,求其最大公約數和最小公倍數。 
int num1,num2;
public MinDivisor_MaxCommonMultiple(){
    System.out.println("請輸入兩個數:");
    Scanner sc  = new Scanner(System.in);
     this.num1 = sc.nextInt();
     this.num2 = sc.nextInt();
    sc.close();
}
//最大公約數
public  void  MaxCommonMultiple(){
    //判斷輸入的數,哪個數就輸出哪個,比如12 和18,18大於12就在18裏面循環最大公約數
    int iBiggerNum = num1>num2?num1:num2;
    int iMaxCommonMultiple = 1;//假設最大公約數等於1

    //現在在18裏面循環,當循環的數除以i等於0時就輸出公約數,然後把公約數賦給變量i,一直循環
    for(int i = 1;i<=iBiggerNum;i++){   
            if(0 == num1%i  && 0 == num2%i){
                System.out.print("公約數="+i+" ,");
                iMaxCommonMultiple = i;
            }
        }
    System.out.println();
    System.out.print("最大公約數="+iMaxCommonMultiple);
}

//最小公倍數
public void MinDivisor(){
    int MaxNum = num1*num2;//定義輸入兩個數的乘積
    int iMinDivisor = num1*num2;//假設最小公倍數就是兩數的乘積

    //利用嗅探法,讓兩數的乘積一個一個的循環,比如 4 和 6,有24 23 22 21……12……1.
    //當循環到12時就滿足12除以4和6的餘數都是0的情況,此時就輸出12
    for(int i = MaxNum;i>0;i-- ){
        if(0 == i%num1 && 0 == i%num2){
            iMinDivisor = i;//把兩數乘積的循環賦值給最小公倍數,一直循環,直到符合條件爲止
            System.out.print("公倍數:"+iMinDivisor);
        }
    }
    System.out.println();
    System.out.println("最小公倍數:"+iMinDivisor);
}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章