求解:c,java,c++最大公因数和最小公倍数?
import java.util.Scanner;
/*题目 : 输入两个正整数 m 和 n 求其最大公约数 和 最小公倍数*/
public class exe{
public static void main(String args[]){
Scanner scan = new Scanner(System.in);
int m = scan.nextInt();
int n = scan.nextInt();
/*方法一:
int min = (m < n ) ? m : n;
for(int i = min ; i > 0 ;i--){
if(m % i == 0 && n % i == 0){
System.out.println("最大公约数为 :" + i);
break;
}
}
int max = (m > n) ? m : n;
for(int j = max;j <= m*n; j++){
if(j % m == 0 && j % n == 0){
System.out.println("最小公倍数是:" + j);
break;
}
}
*/
/*辗转相除法:
算法原理 :
(x / y) --得余数-->a,
(y / a)--得余数-->c .....依次下去;
直到两数相除余数为0(x1 / y1 == 0)
则得y1为最大公约数*/
//最大公倍数:为(x / y1)*(y / y1) * y1;
int reme = 0;
int m1 = m,n1 = n;
int x = 0;
while(true){
if(m % n == 0){
reme = n;
System.out.println(n);
break;
}else{
x = m%n;
m = n;
n = x;
}
System.out.println("最小公倍数" +(m1/reme)*(n1/reme)*reme );
}
}