// Autor: H.Podhaisky, M. Kotschote import java.awt.*; import java.math.*; import java.awt.event.*; import java.applet.*; import java.util.*; import java.net.*; import java.io.*; public class Prog extends Applet { MyControls controls; MyCanvas canvas; public void init() { setLayout(new BorderLayout()); canvas = new MyCanvas(); add("North",canvas); add(controls = new MyControls(canvas)); } static class MyAdapter extends WindowAdapter { public void windowClosing(WindowEvent e) { System.out.println("Close \n"+e); System.exit(0); } } public void destroy() { remove(controls); remove(canvas); } public void start() { controls.setEnabled(true); } public void stop() { controls.setEnabled(false); } public void processEvent(AWTEvent e) { System.out.println("in AWT\n"); if (e.getID() == Event.WINDOW_DESTROY) { System.exit(0); } } public static void main(String args[]) { Frame f = new Frame("Prog"); Prog myProg = new Prog(); myProg.init(); myProg.start(); f.add("Center", myProg); f.setSize(500, 500); f.show(); f.addWindowListener(new MyAdapter()); } public String getAppletInfo() { return ""; } public void actionPerformed(ActionEvent e) { System.out.println("Action "+e); } } class MyCanvas extends Canvas { Font font; String res=""; int N; public void paint(Graphics g) { Rectangle r = getBounds(); g.setColor(Color.black); g.setFont(font); } public void redraw(Integer zahl, MyControls myPanel) { N=zahl.intValue(); fac(); myPanel.output.append(res); repaint(); } void spalte_ab(int l){ int ex; int dd,dd1=1; ex=0;dd=l; while(N%dd==0) { dd1=dd; dd=dd*l; ex++; } if (ex==1) { res+=l; } if (ex>1) { res+=l+"^"+ex; } N/=dd1; if (ex>0 && N!=1) { res+="*"; } } void fac() { int[] prime1={2,3,5,7,11,13,17,19,23,29,0}; int[] offset={1,7,11,13,17,19,23,29,0}; double rt; boolean done; rt=System.currentTimeMillis(); int l,i,t; res="N="; i=0; l=prime1[i]; while(l!=0) { spalte_ab(l); l=prime1[++i]; } t=1; done=false; while (!done) { i=0; l=30*t+offset[i]; while (offset[i]!=0&&!done) { spalte_ab(l); l=30*t+offset[++i]; if (l*l > N) done=true; } t++; } if (N!=1) res+=N; rt=System.currentTimeMillis()-rt; res+='\n'; res+="time "+rt+" m. sec\n"; } } class MyControls extends Panel implements ActionListener { public TextField input; public TextArea output; Panel p1 = new Panel(); Panel p2 = new Panel(); MyCanvas canvas; public MyControls(MyCanvas canvas) { Button but1=new Button("Faktorisieren!"); this.canvas = canvas; p1.add(new Label("N=")); p1.add(input = new TextField("12863273",20)); p1.add(but1); but1.addActionListener(this); p2.add(output= new TextArea("",20,40)); add("North",p1); add("South",p2); } public void actionPerformed(ActionEvent ev) { String label = ev.getActionCommand(); canvas.redraw(new Integer(input.getText()),this); } }