// a simple LCM by brute force!
// John Sklar, CED 512 - fall, 2k
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
public class lcm extends Applet implements ActionListener
{
TextField integer1,integer2,integer3;
Button action = new Button (" Find the LCM ");
Label answer, Banner;
public void init()
{
Font bigFont = new Font("TimesRoman", Font.ITALIC, 24);
Font biggerFont = new Font("TimesRoman", Font.ITALIC, 30);
Font monoFont = new Font("Courier", Font.BOLD, 24);
integer1 = new TextField(6);
integer2 = new TextField(6);
integer3 = new TextField(6);
Banner = new Label ("Enter some integers");
answer = new Label(" ");
action.setFont(monoFont);
answer.setFont(biggerFont);
Banner.setFont(bigFont);
integer1.setFont(monoFont);
integer2.setFont(monoFont);
integer3.setFont(monoFont);
add (Banner);
add (integer1);
add (integer2);
add (integer3);
add (action);
add (answer);
action.addActionListener(this);
setBackground(Color.white);
}
public void actionPerformed (ActionEvent e)
{
boolean thirdnumber=true;
int i;
if (action.getLabel()==" Find the LCM ")
{
int lcm,q,accumulator=0;
int[] number = new int[3];
int[][] primes = new int[2][1000];
try
{
number[0]=Integer.parseInt(integer1.getText());
}
catch(Exception error)
{
accumulator++;
number[0]=1;
}
try
{
number[1]=Integer.parseInt(integer2.getText());
}
catch(Exception error)
{
accumulator++;
number[1]=1;
}
try
{
number[2]=Integer.parseInt(integer3.getText());
}
catch(Exception error)
{
accumulator++;
number[2]=1;
}
if(accumulator<2){
do{
lcm=1;
q=2;
for(int l = 0;l < 2; ++l)// clean up primes-+
for(int m = 0 ;m < 1000; ++m)
primes[l][m]=0;
if(thirdnumber==true && number[1]==number[2])
thirdnumber=false;
if(number[0]*number[1]==0)
lcm = 0;
else
{
for(i=0;i<2;++i){
do{
if(number[i]%q==0){
primes[i][q]++;
number[i] /= q;
}
else{
++q;
}
}while(q<=Math.sqrt(number[i]));
primes[i][number[i]]++;
q=2; // reset q
}
// compare the factors
for(i = 2; i < primes[0].length;++i)
if(primes[0][i]+primes[1][i]>0) // there are factors
if(primes[0][i] >= primes[1][i])
lcm *= Math.pow(i,primes[0][i]);
else
lcm *= Math.pow(i,primes[1][i]);
}// end of the zero trap
if(thirdnumber==true){
number[0]=lcm;
number[1]=number[2];
}
}while(thirdnumber==true);
answer.setText ("LCM is " + lcm);
}
else
answer.setText ("Enter two integers");
action.setLabel(" Clear ");
integer1.setEnabled(false);// no typing now
integer2.setEnabled(false);// no typing now
integer3.setEnabled(false);// no typing now
}
else{
Banner.setText ("Enter some integers");
integer1.setText("");
integer2.setText("");
integer3.setText("");
answer.setText (" ");
action.setLabel(" Find the LCM ");
integer1.setEnabled(true);// ok, you can type
integer2.setEnabled(true);// ok, you can type
integer3.setEnabled(true);// ok, you can type
}
}
}