日期:2014-05-20  浏览次数:20745 次

求助啊~考试不会。
1 .编写求ij*ji=1300的i,j中最小值的程序,并输出此时的i,j.(i j是1位的整数)
 
2.设计一个求对最大公约数和最小公倍数的类ClassNum,该类中应该包含最大公约数gcd(a,b)和最小公倍数lcm(a,b)的两个方法.要求:在主方法中任意输入两个数a,b,显示它们的最大公约数和最小公倍数.
 
3.将上述第而题用AWT设计,并用GUI形式输出其中的一个(或多个结果).具体要求:
  (1)良好的用户界面;(2)合理的布局;(3)利用TextField或者TextArea实现数据的输入和输出;
  (4)利用Label实现信息的提示;(5)利用内部类实现窗口退出的功能。
 
注:(int)(Math.random()*100)+1 可以随机生成1到100的随机数。


------解决方案--------------------
[code=Java][/code]
public class GongyueGongbei {
//最大公约数
public static int commonDivisor(int x, int y){
int max = Math.max(x, y);
int temp = 1;
int result = 0;
while(temp<=max){
if(x%temp==0 && y%temp==0){
result = temp;
}
temp++;
}

return result;
}
//最小公倍数
public static int commonMultiple(int x,int y){
int amass = x*y;
int min = Math.min(x,y);
int temp = amass;
int result=1;
while(temp>=min && temp<=amass){
if(temp%x==0 && temp%y==0){
result = temp;
}
temp--;
}
return result;
}

public static void main(String[] args) {
System.out.println(commonDivisor(3,9));
System.out.println(commonMultiple(3,9));
}

}
------解决方案--------------------
第一题可以这样:
Java code

public static void main(String[] args) {
        ok:
        for(int i = 0;i<=9;i++){
            for(int j = 0;j<=9;j++){
                int num = (i * 10 + j)*(j * 10 + i);
                if(num == 1300){
                    System.out.println("i为:" + i);
                    System.out.println("j为:" + j);
                    break ok;
                }
            }
        }
}

------解决方案--------------------
Java code
        for(int i=1;i<10;i++){
            for(int j=1;j<10;j++){
                if((10*i+j)*(10*j+i)==1300){
                    System.out.println("i="+i+",j="+j);
                }
            }
        }

------解决方案--------------------
第二题:
Java code
public class myclass
{
    public static void main(String[] args)
    {
        System.out.println(ClassNum.lcm(3,4));
        System.out.println(ClassNum.gcd(2,4));
    }
}
class ClassNum
{

    public static int lcm(int a, int b)
    {
        int i;
        for (i = a; ; i++)
        {
            if (i % a == 0 && i % b == 0)
                return i;
        }
        
    }
    public static int gcd(int a, int b)
    {
        int i = a > b ? a : b;
        for (i = i ; i > 1; i--)
        {
            if (a % i == 0 && b % i == 0)
                return i;
        }
        return 1;
    }
}