Hallo
bei meinem Programm dauert es extrem lange um zu testen ob eine zahl eine Primzahl ist.Bei kleineren Zahlen geht es ja noch aber bei größeren dauert es meiner meinung nach viel zu lange.Ist das normal und geht das nicht schneller??
Hier der Code:
bei meinem Programm dauert es extrem lange um zu testen ob eine zahl eine Primzahl ist.Bei kleineren Zahlen geht es ja noch aber bei größeren dauert es meiner meinung nach viel zu lange.Ist das normal und geht das nicht schneller??
Hier der Code:
Code:
public class JFrame extends javax.swing.JFrame {
/** Creates new form JFrame */
public JFrame() {
initComponents();
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
private void initComponents() {//GEN-BEGIN:initComponents
eingabe = new javax.swing.JTextField();
jLabel1 = new javax.swing.JLabel();
rechnen = new javax.swing.JButton();
jLabel2 = new javax.swing.JLabel();
eingabe2 = new javax.swing.JTextField();
jLabel3 = new javax.swing.JLabel();
jScrollPane1 = new javax.swing.JScrollPane();
Ausgabe = new javax.swing.JTextArea();
Ausgabe.setLineWrap(true);
Ausgabe.setWrapStyleWord(true);
getContentPane().setLayout(null);
addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent evt) {
exitForm(evt);
}
});
getContentPane().add(eingabe);
eingabe.setBounds(110, 30, 100, 20);
jLabel1.setText("Primzahlen von:");
getContentPane().add(jLabel1);
jLabel1.setBounds(20, 30, 90, 16);
rechnen.setText("Start");
rechnen.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
rechnenActionPerformed(evt);
}
});
getContentPane().add(rechnen);
rechnen.setBounds(410, 30, 95, 26);
jLabel2.setText("bis");
getContentPane().add(jLabel2);
jLabel2.setBounds(210, 30, 17, 20);
getContentPane().add(eingabe2);
eingabe2.setBounds(230, 30, 100, 20);
jLabel3.setText("berechnen");
getContentPane().add(jLabel3);
jLabel3.setBounds(330, 30, 61, 20);
jScrollPane1.setHorizontalScrollBarPolicy(javax.swing.JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
jScrollPane1.setVerticalScrollBarPolicy(javax.swing.JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
jScrollPane1.setViewportView(Ausgabe);
getContentPane().add(jScrollPane1);
jScrollPane1.setBounds(10, 93, 520, 290);
pack();
java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
setSize(new java.awt.Dimension(549, 433));
setLocation((screenSize.width-549)/2,(screenSize.height-433)/2);
}//GEN-END:initComponents
private void rechnenActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_rechnenActionPerformed
{
double aktuelleZahl = Double.parseDouble(eingabe.getText());
double endzahl = Double.parseDouble(eingabe2.getText());
//Äusere Schleife
StringBuffer s = new StringBuffer("");
while (aktuelleZahl <= endzahl)
{
boolean primzahl = true;
//innere Schleife
double teiler = 2;
while (teiler < aktuelleZahl)
{
if (aktuelleZahl % teiler == 0)
{
primzahl = false;
}
teiler++;
}
{
if (primzahl == true)
{
java.text.DecimalFormat df=new java.text.DecimalFormat("0");
s.append(df.format(aktuelleZahl)+" ");
Ausgabe.setText(s.toString());
}
}
{
aktuelleZahl++;
}
}
}
// Add your handling code here:
}//GEN-LAST:event_rechnenActionPerformed
/** Exit the Application */
private void exitForm(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_exitForm
System.exit(0);
}//GEN-LAST:event_exitForm
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
new JFrame().show();
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton rechnen;
private javax.swing.JTextArea Ausgabe;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTextField eingabe2;
private javax.swing.JTextField eingabe;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel1;
// End of variables declaration//GEN-END:variables
}