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

}

猜你喜欢

转载自blog.csdn.net/weixin_42495773/article/details/106448853
今日推荐