import java.util.Scanner;
/**
* @author LLJ
* @time 2020-5-30 下午10:01:48
* @Description java語言設計求最大公約數出現的問題和解決方案
*/
public class ZuiDaGongYueShu {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("請輸入一個整數A:");
int a = scanner.nextInt();
System.out.println("請輸入一個整數B:");
int b = scanner.nextInt();
int bigNumber = 1;//臨時初始定義最大公約數爲0
int number = 0;//初始定一個數,爲了後續賦值(比較)使用
int[] aArray = gongYueShu(a);//a的所有約數組成的數組
int[] bArray = gongYueShu(b);//b的所有約數組成的數組
for(int i = 0;i < aArray.length;i++){
for(int j = 0; j< bArray.length;j++){
if(aArray[i] == bArray[j]){//判斷是否是共同的約數,是的話,則把該值 賦值給number
number = aArray[i];//暫時把相等的約數賦值給number
if(number > bigNumber){//如果number大於臨時定義的最大公約數bigNumber,則把number的值賦值給bigNumber
bigNumber = number;
}
}
}
}
System.out.println("最大公約數爲:"+bigNumber);
}
/**
* 求一個數的所有約數
* @Time 2020-5-30 下午10:19:14
* @param number
* @return int[]
*/
public static int[] gongYueShu(int number){
int[] array = new int[number/2+1];//初始定義一個數組,爲了存約數
int j = 0;//隨意定義的
for(int i = 1; i <= number/2+1;i++){//number/2+1,是爲了防止特殊情況出現,比如4的約數爲(1,2,4),6的約數爲(1,2,3,6)
if(number%i == 0){//代表是約數
array[j] = i;
j++;//如果是約數,則j+1
}
}
return array;
}
}