求编写程序切两个数的最大公约数和最小公倍数

解决方案 »

  1.   

    代码如下:
    import javax.swing.*;
    import java.awt.event.*;
    import java.awt.*;
    public class NumTest extends JFrame implements ActionListener
    {
    JButton btn1 = new JButton("最大公约数");
    JButton btn2 = new JButton("最小公倍数");
    JLabel label_1 = new JLabel("Num1");
    JLabel label_2 = new JLabel("Num2");
    JLabel label_3 = new JLabel("结果");
    JTextField num1 = new JTextField(15);
    JTextField num2 = new JTextField(15);
    JTextField result = new JTextField(15);
    public NumTest()
    {
    setSize(300, 200);
    setVisible(true);
    setLayout(null);
    setResizable(false);

    label_1.setBounds(10, 20, 40, 20);
    num1.setBounds(70,20,100,20);
    label_2.setBounds(10, 50, 40, 10);
    num2.setBounds(70,50,100,20);
    label_3.setBounds(10, 80, 40, 10);
    result.setBounds(70,80,100,20);
    result.setEditable(false);

    btn1.setBounds(180, 20, 100, 20);
    btn2.setBounds(180, 50, 100, 20);
    add(num1);
    add(num2);
    add(result);
    add(btn1);
    add(btn2);
    add(label_1);
    add(label_2);
    add(label_3);

    btn1.addActionListener(this);
    btn2.addActionListener(this);

    }
    public static void main(String[] args)
    {
    new NumTest();
    }

    public void actionPerformed(ActionEvent e)
    {
    int m, n;
    m = Integer.parseInt(num1.getText());
    n = Integer.parseInt(num2.getText());
    if(btn1 == e.getSource())
    {
    int k = m < n ? m : n;
    for(; k > 0; k--)
    if(m % k == 0 && n % k == 0)
    {
    result.setText("" + k);
    break;
    }
    }
    if(btn2 == e.getSource())
    {
    int k = m > n ? m : n;
    for(; k <= m * n; k++)
    if(k % m == 0 && k % n == 0)
    {
    result.setText("" + k);
    break;
    }
    }
    }
    }
      

  2.   

    这个算法可能好点,把actionPerformed以后换成下面就可了.
    public void actionPerformed(ActionEvent e)
    {
    int m, n;
    m = Integer.parseInt(num1.getText());
    n = Integer.parseInt(num2.getText());
    if(btn1 == e.getSource())
    {
    result.setText("" + f1(m,n));
    }
    if(btn2 == e.getSource())
    {
    result.setText("" + m * n / f1(m, n));
    }
    }

    public int f1(int m , int n)
    {
    return f2(m>n?m:n, m<=n?m:n);
    }

    public int f2(int a, int b)
    {
    int c = a % b;
    if(c == 0)
    return b;
    else
    {
    return f2(b, c);
    }
    }