import java.awt.*;
import java.applet.*;
import java.awt.event.*;public class Applet1 extends Applet implements ActionListener
{
TextField input1;
TextField input2;
Label output;
Button yue;
Button bei; public void init() {
input1=new TextField(4);
input2=new TextField(4);
output=new Label(" ");
yue=new Button("最大公约数");
bei=new Button("最小公倍数");
add(input1);
add(input2);
add(output);
add(yue);
add(bei);
yue.addActionListener(this);
bei.addActionListener(this);
} public void actionPerformed(ActionEvent e)
{
int temp=0,value1=0,value2=0;
String s1=input1.getText();
int i1=Integer.parseInt(s1);
String s2=input2.getText();
int i2=Integer.parseInt(s2); if(i1>i2) //保持 i1>i2
{temp=i1;i1=i2;i2=temp;};
int aa=i1;
int bb=i2;
do
{
temp=aa % bb;
aa=bb;
bb=temp;
}
while (bb!=0); if(e.getSource()==yue) //求最大公约数
output.setText(" "+aa);
else {
if(e.getSource()==bei) //最小公倍数
output.setText(" "+i1*i2/aa);
}
}
}
import java.applet.*;
import java.awt.event.*;public class Applet1 extends Applet implements ActionListener
{
TextField input1;
TextField input2;
Label output;
Button yue;
Button bei; public void init() {
input1=new TextField(4);
input2=new TextField(4);
output=new Label(" ");
yue=new Button("最大公约数");
bei=new Button("最小公倍数");
add(input1);
add(input2);
add(output);
add(yue);
add(bei);
yue.addActionListener(this);
bei.addActionListener(this);
} public void actionPerformed(ActionEvent e)
{
int temp=0,value1=0,value2=0;
String s1=input1.getText();
int i1=Integer.parseInt(s1);
String s2=input2.getText();
int i2=Integer.parseInt(s2); if(i1>i2) //保持 i1>i2
{temp=i1;i1=i2;i2=temp;};
int aa=i1;
int bb=i2;
do
{
temp=aa % bb;
aa=bb;
bb=temp;
}
while (bb!=0); if(e.getSource()==yue) //求最大公约数
output.setText(" "+aa);
else {
if(e.getSource()==bei) //最小公倍数
output.setText(" "+i1*i2/aa);
}
}
}
采用的是辗转相除法来求最大公约数,此类算法在一般的数据结构书上都有介绍。
其实你的源程序算法也时行得通的。
if(i1>i2) //保持 i1>i2
{
temp=i1;i1=i2;i2=temp;
}
if(e.getSource()==yue) //求最大公约数
{
for(int i=i1;i>=1;i--)
{
if((i1%i==0)&&(i2%i==0))
value1=i;
output.setText(" "+Integer.toString(value1));
break;
}
}
}
else if(e.getSource()==bei) //最小公倍数
{
for(int j=i1;j<=i1*i2;j++)
if((j%i2==0&&)(j%i1==0))
{
value2=j;
output.setText(" "+Integer.toString(value2));
break;}
}
( 前面的一样)