Hi,
Ich probiere gerade das Sieb des Eratosthenes in einer Konsole zu verwenden. Das funktioniert so:
- Lösche die Vielfachen von 2,3,5,7,11
- Suche ob Vielfache der übrigen Zahlen vorhanden sind und lösche
Ich habe eine Variante davon geschrieben, allerdings habe ich das Problem, dass ich die Schleife updaten müsste, so dass nur noch die Zahlen durchgegangen werden müssen die übrig sind. Dies würde auch eine deutlich höhere Perfomance bringen.
C#
VB.NET
Ich probiere gerade das Sieb des Eratosthenes in einer Konsole zu verwenden. Das funktioniert so:
- Lösche die Vielfachen von 2,3,5,7,11
- Suche ob Vielfache der übrigen Zahlen vorhanden sind und lösche
Ich habe eine Variante davon geschrieben, allerdings habe ich das Problem, dass ich die Schleife updaten müsste, so dass nur noch die Zahlen durchgegangen werden müssen die übrig sind. Dies würde auch eine deutlich höhere Perfomance bringen.
Brainfuck-Quellcode
- // Start einlesen
- Console.WriteLine("Untergrenze:");
- int untergrenze = int.Parse(Console.ReadLine());
- // Ende einlesen
- Console.WriteLine("Obergrenze:");
- int obergrenze = int.Parse(Console.ReadLine());
- // Zahlenliste befüllen
- IList<int> zahlenliste = new List<int>();
- for (int u = untergrenze; u <= obergrenze; u++)
- {
- zahlenliste.Add(u);
- }
- Console.WriteLine("--------------------------------------------");
- // Filtern
- for(int i = 2; i <= zahlenliste.Count - 1; i++)
- {
- for (int z = 0; z <= zahlenliste.Count - 1; z++)
- {
- if (zahlenliste.ElementAt(z) % i == 0)
- {
- if (zahlenliste.ElementAt(z) != i) { zahlenliste.RemoveAt(z); }
- }
- }
- }
- for (int w = 0; w <= zahlenliste.Count - 1; w++)
- {
- Console.WriteLine(zahlenliste.ElementAt(w).ToString());
- }
- Console.ReadKey();
- Console.Clear();
VB.NET-Quellcode
- ' Start einlesen
- Console.WriteLine("Untergrenze:")
- Dim untergrenze As Integer = Integer.Parse(Console.ReadLine())
- ' Ende einlesen
- Console.WriteLine("Obergrenze:")
- Dim obergrenze As Integer = Integer.Parse(Console.ReadLine())
- ' Zahlenliste befüllen
- Dim zahlenliste As IList(Of Integer) = New List(Of Integer)()
- For u As Integer = untergrenze To obergrenze
- zahlenliste.Add(u)
- Next
- Console.WriteLine("--------------------------------------------")
- ' Filtern
- For i As Integer = 2 To zahlenliste.Count - 1
- For z As Integer = 0 To zahlenliste.Count - 1
- If zahlenliste.ElementAt(z) Mod i = 0 Then
- If zahlenliste.ElementAt(z) <> i Then
- zahlenliste.RemoveAt(z)
- End If
- End If
- Next
- Next
- For w As Integer = 0 To zahlenliste.Count - 1
- Console.WriteLine(zahlenliste.ElementAt(w).ToString())
- Next
- Console.ReadKey()
- Console.Clear()
faxe1008