【问题描述】输入两个正整数a和b(0<a,b<1000000),求出其最大公约数和最小公倍数并输出。
【输入文件】从标准输入读取一行,是两个整数a和b,以空格分隔。
【输出文件】向标准输出打印以空格分隔的两个整数,分别是a、b的最大公约数和最小公倍数。在输出末尾要有一个回车符。
【输入样例】12 18
【输出样例】6 36
【样例说明】12和18的最大公约数是6,最小公倍数是36.
【评分标准】结果正确则该测试点得满分,否则该测试点得0分。
代码说明
该题在基于第一题的基础上,没有出现新的知识,逻辑理解起来也较为简单,通过遍历寻找最大公约数和最小公倍数。
代码如下:
package work2;
import java.util.Scanner;
public class gongyuegongbei {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int i = input.nextInt(); //读取两个输入
int j = input.nextInt();
int gongyue=1,gongbei=1,m,n,min,max; //初始化存储公约数和公倍数的值
if(i<j) { //寻找两数中的最小值、最大值
min = i;
max = j;
}
else {
min=j;
max = i;
}
for(m=1;m<=min;m++) { //寻找公约数直至达到两数中的最小值
if(i%m==0 && j%m==0)
gongyue = m; //每次寻找到均被重新赋值,最后存储的为公约数的最大值
}
for(n=max;;n++) { //从两数中的最大值开始寻找最小公倍数
if(n%i == 0 && n%j == 0) {
gongbei = n; //当找到一个公倍数时即为最小公倍数,退出遍历
break;
}
}
System.out.println(gongyue+" "+gongbei+"\n");
}
}