1063: 最大公约与最小公倍
时间限制: 1 Sec 内存限制: 128 MB
提交: 34904 解决: 16637
[状态] [讨论版] [提交] [命题人:admin]
题目描述
输入两个正整数,输出其最大公约数和最小公倍数。
输入
输入两个正整数n和m(n,m<=1000000)。输入保证最终结果在int范围内。
输出
输出两个整数,用空格隔开。表示m和n的最大公约数和最小公倍数。
样例输入 Copy
4 6
样例输出 Copy
2 12
今天在写这个程序的时候,遇到一个输出错误。然后我按公式敲下来,就是不对的,很是奇怪。后来没办法,我去网上找了一个代码试试,人家的就对了。我把我的输出改一下,我的也对了。下面把这个题的源码发出来,分享给各位,如果有人能明白这两种输出为什么一个对一个不对,欢迎评论留言。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int m,n;
m = input.nextInt();
n = input.nextInt();
int temp,a,b;
a=m;
b=n;
//先求出来最大的数
if (a<b) {
temp = a;
a = b;
b = temp;
}
//然后辗转相除
int yushu = a%b;
while(yushu != 0) {
a = b;
b = yushu;
yushu = a%b;
}
//最大公约数b,最小公倍数是后面那个
System.out.println(b+" "+(m/b*n));
//下面的这个是不对的,程序会报错
//System.out.println(b+" "+(m*n/b));
}
}