java語言求最大公約數

 

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;
	}

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章