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; }}