输入两个正整数m和n,求其最大公约数和最小公倍数
思考点:
1.输入数m和n的大小关系、是否相等;
2.最大公约数和最小公倍数的概念
- 考虑到所输入数是否为质数
如果两个自然数是互质数,那么它们的最大公约数是1,最小公倍数是这两个数的乘积。例如6和7,它们是互质数,所以(6,7)=1,[6,7]=72。- 如果两个自然数中,较大数是较小数的倍数,那么较小数就是这两个数的最大公约数,较大数就是这两个数的最小公倍数
3.求最大公约数的方法
这里用到的是 辗转相除法
具体实现代码如下:
package test2;
import java.util.Scanner;
public class Demo8 {
public static void main(String[] args) {
//8输入两个正整数m和n,求其最大公约数和最小公倍数
Scanner scanner1 = new Scanner(System.in);
System.out.println("请输入正整数m:");
int m = scanner1.nextInt();
Scanner scanner2 = new Scanner(System.in);
System.out.println("请输入正整数n:");
int n = scanner2.nextInt();
int temp;
if(m>n){
if (m%n==0){
System.out.println("最大公约数:"+n);
System.out.println("最小公倍数:"+m);
}else {
int a = m;
int b = n;
while (m%n!=0){
temp=m%n;
m=n;
n=temp;
}
if (n==1){;//两数互质时,最大公约数是1,最小公倍数是它们的乘积。
System.out.println("最大公约数:"+n);
System.out.println("最小公倍数:"+a*b);
}else {
System.out.println("最大公约数:"+n);
System.out.println("最小公倍数:"+n*a);
}
}
} else {
if (n%m==0){
System.out.println("最大公约数"+m);
System.out.println("最小公倍数:"+n);
}else {
int c = n;
int d = m;
while (n%m!=0){
temp = n%m;
n=m;
m=temp;
}
if (m==1){//两数互质时,最大公约数是1,最小公倍数是它们的乘积。
System.out.println("最大公约数"+m);
System.out.println("最小公倍数:"+c*d);
}else {
System.out.println("最大公约数"+m);
System.out.println("最小公倍数:"+m*c);
}
}
}
}
}