nach langer, langer Zeit habe ich mich endlich mal wieder am Programmieren versucht und daher das Sieb des Eratosthenes einmal programmiert.
Für mich sieht der Code (bin Anfänger / Amateur) recht schlank aus. Seht ihr noch Möglichkeiten die Performance zu steigern? Vor allem bei Zahlenbreiche von 50k+ dauert es doch schon recht lange. (Ja, mir sind die Rechendurchläufe mit den ganzen Schleifen schon bewusst und was sich da alles quadriert usw. ;-) )
using System;
using System.Windows.Forms;
namespace Primzahlberechnung
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
listBox1.Items.Clear();
ulong end = Convert.ToUInt64(textBox1.Text);
ulong[] primzahl = new ulong[end];
// Füllen des Arrays mit allen Zahlen
for (ulong i = 1; i < end; i++)
{
primzahl[i] = i + 1;
}
for(ulong u = 2 ; u < end ; u++)
{
for (ulong zahl = 0; zahl ≤ Convert.ToUInt64(primzahl.Length)-1; zahl++)
{
if (zahl ≥ 1)
{
if (primzahl[zahl] != u && primzahl[zahl] !=0)
{
if (primzahl[zahl] % u == 0)
{
primzahl[zahl] = 0;
}
}
}
}
}
// Ausgabe an die Listbox
for(ulong zahl =0; zahl ≤ Convert.ToUInt64(primzahl.Length) - 1; zahl++)
{
if (primzahl[zahl] != 0)
{
listBox1.Items.Add(primzahl[zahl].ToString());
}
}
}
}
}