一、题目分析
1.问题:设某未知正整数x满足:
(1)x和a0的最大公约数是a1;
(2)x和b0的最小公倍数是b1。
Hankson的“逆问题”就是求出满足条件的正整数x。
2.分析过程
(1)根据两个要求,得出判断x的条件;
(2)因为x是b1的约数,所以x <= b1,y = b1/x;y也可能符合条件,可以减少循环的次数,确定符合条件数的范围;
(3)每次输入4个数,将这4个数存放到数组中,输入n组数据,即处理n次;
二、程序分析
1.程序组成
1.1 两个类:
(1)Solve类:求出满足要求的x,并输出x的值和x的个数
(2)Improve类:测试类
1.2 三个方法
1.2.1 int Max(int a,int b){}
功能:求两个数的最大公约数
//求两个数的最大公约数(辗转相除法)
public static int Max(int a,int b){
if(a%b == 0){
return b;
}else{
return Max(b,a%b);
}
}
1.2.2 void improve(){}
功能:判断符合条件数的个数,并输出
/**
*
* @param: []
* @return: void
* @Description:判断符合条件数的个数,并输出
*/
public static void improve(){
int[] arrays = new int[4];
int count = 0;
for(int i = 0;i < 4;i++){
System.out.print("请输入第"+(i+1)+"个数:");
int number = new Scanner(System.in).nextInt();