【问题描述】输入两个正整数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");
		
	}
	

}