求助啊~考试不会。
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;
}
}