題目:輸入兩個正整數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);
}
}