方法一:
import java.util.Scanner;
public class Test01 {
int math (int a,int b) {//用转转相除法求最小公约数,在这里设一个方法
if(a%b==0) {
return b;
}
else {
return math (b,a%b);
}
}
public static void main(String []args) {
int x=1;
while(x>0) {//输入错误时继续输入
System.out.println("请输入两个正整数:");
Scanner in=new Scanner(System.in);
int m=in.nextInt();
int n=in.nextInt();
if(m>0&&n>0) {
int u=m*n;//用u来计算m*n
Test01 t=new Test01();
int g=t.math(m, n);//用g来表示最小公约数
System.out.println("最小公约数为:"+g);
System.out.println("最大公倍数为:"+u/g);
break;
}
else {
System.out.println("输入错误!请重新输入");
}
}
}
}
方法二:
import java.util.Scanner;
public class test02 {
public static void main(String [] args) {
int x=1;
while(x>0) {
System.out.println("请输入两个正整数:|");
Scanner in=new Scanner(System.in);
int m=in.nextInt();
int n=in.nextInt();
int u= m*n; // 用u来保存m*n 的值
if(m>=0&&n>=0) {//判断输入是否正确
while(n>0) {
if(m>=n&&m%n!=0){
int t = n;
n = m%n; // 利用了递归算法
m = t;
}else if(m%n==0){
break; // m是n的倍数
}else{
int s = m; // 当 m < n 时 ,m n的值进行交换交换
m = n;
n = s;
}
}
System.out.println("两个数的最大公约数为:"+n);
System.out.println("两个数的最小公倍数为:"+u/n);
break;
}
else {
System.out.println("输入错误!请重新输入。");
}
}
}
}
方法三:
import java.util.Scanner;
public class test03 {
public static void main(String [] args) {
int a=1;
while(a>0) {
System.out.println("请输入两个正整数:|");
Scanner in=new Scanner(System.in);
int x=in.nextInt();
int y=in.nextInt();
if(x>0&&y>0) {
int u= x*y; // 用u来保存x*y 的值
//辗转相减法计算最小公约数
while (x!=y)
{
if (x>y)
x = x-y;
else
y = y-x;
}
System.out.println("两个数的最大公约数为:"+x);
System.out.println("两个数的最小公倍数为:"+u/x);
break;
}
else {
System.out.println("输入错误!请重新输入。");
}
}
}
}
求三个数的最大公约数与最小公倍数:
import java.util.Scanner;
public class test04 {
public static void main(String [] args) {
int o=1;
while(o>0) {
System.out.println("请输入三个正整数:|");
Scanner in=new Scanner(System.in);
int x=in.nextInt();
int y=in.nextInt();
int z=in.nextInt();
if(x>0&&y>0&&z>0) {
//先求x,y的最大公约数与最小公倍数
int u= x*y; // 用u来保存x*y 的值
//辗转相减法计算最小公约数
while (x!=y)
{
if (x>y)
x = x-y;
else
y = y-x;
}
int m=u/x;
int n=m*z;
int v=x;
//再求x,y的最大公约数v与z的最大公约数, x,y的最小公倍数m与z的最小公倍数
while(v!=z)
{
if(v>z)
v=v-z;
else
z=z-v;
}
System.out.println("三个数的最大公约数为:"+v);
System.out.println("三个数的最小公倍数为:"+n/v);
break;
}
else {
System.out.println("输入错误,请重新输入。");
}
}
}
}