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

解决方案 »

  1.   

    csdn文档里面有所有的算法,我昨天刚看了!
      

  2.   

    guestman(天涯浪子) 
    采用的是辗转相除法来求最大公约数,此类算法在一般的数据结构书上都有介绍。
    其实你的源程序算法也时行得通的。
                  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;}
             }         
       ( 前面的一样)