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);
}
}
Java_输入两个正整数,求其最大公约数和最小公倍数
最新推荐文章于 2021-09-07 23:10:43 发布
这篇博客主要讲解如何使用Java编程语言,通过欧几里得算法来计算两个正整数的最大公约数(GCD)以及它们的最小公倍数(LCM)。内容包括算法原理、代码实现以及示例测试,帮助读者理解并掌握这一基本算法。
1013

被折叠的 条评论
为什么被折叠?



