Java_输入两个正整数,求其最大公约数和最小公倍数

这篇博客主要讲解如何使用Java编程语言,通过欧几里得算法来计算两个正整数的最大公约数(GCD)以及它们的最小公倍数(LCM)。内容包括算法原理、代码实现以及示例测试,帮助读者理解并掌握这一基本算法。
package t5;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;

//输入两个正整数x和y,求其最大公约数和最小公倍数. 
//在循环中,只要除数不等于0,用较大数除以较小的数,将小的一个数作为下一轮循环的大数,取得的余数作为下一轮循环的较小的数,如此循环直到较小的数的值为0,返回较大 的数,此数即为最大公约数,
//最小公倍数为两数之积除以最大公约数.

public class Test {
	/**
	 * 
	 * @return 双元素数组,保存最大公约数和最小公倍数
	 */
	public static int[] max_min(){
		BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
		int num1=0;
		int num2=0;
		int[] result=new int[2];
		System.out.println("请输入第1个数字:");
		while(true) {
			try {
				num1=Integer.parseInt(br.readLine());
				break;
			} catch (NumberFormatException e) {
				e.printStackTrace();
				System.out.println("请重新输入:");
				continue;
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		System.out.println("请输入第2个数字:");
		while(true) {
			try {
				num2=Integer.parseInt(br.readLine());
				break;
			} catch (NumberFormatException e) {
				e.printStackTrace();
				System.out.println("请重新输入:");
				continue;
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		result[0]=max(num1, num2);
		result[1]=min(num1, num2);
		return result;
	}
	/**
	 * 
	 * @param num1
	 * @param num2
	 * @return 最大公约数
	 */
	private static int max(int num1,int num2) {
		int max;
		int min;
		if(num1>num2) {
			max=num1;
			min=num2;
		}else {
			max=num2;
			min=num1;
		}
		while(min!=0) {
			int temp=min;
			min=max%min;
			max=temp;
		}
		return max;
	}
	/**
	 * 
	 * @param num1
	 * @param num2
	 * @return 最小公倍数
	 */
	private static int min(int num1,int num2) {
		return num1*num2/max(num1,num2);
	}
}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值