C# :: Aufgabe #58 :: Lösung #8

11 Lösungen Lösungen öffentlich
#58

Alle Primzahlen bis zu einem Maximalwert ermitteln

Anfänger - C# von devnull - 26.02.2014 um 18:36 Uhr
Es soll ein Programm geschrieben werden, welches alle Primzahlen im Bereich von 2 bis zu einem Maximalwert sucht und auf der Konsole ausgibt.
Den Maximalwert soll der Benutzer beim Programmaufruf auf der Kommandozeile angeben können.
Der Algorithmus zur Primzahlensuche ist frei wählbar.
#8
vote_ok
von niknik (1230 Punkte) - 13.08.2015 um 13:14 Uhr
Sieb von Eratosthenes

Quellcode ausblenden C#-Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SiebDesErasthotenes
{
    class Program
    {

        public static List<int> Primzahlsucher(int n)
        {
                bool[] check = new bool[n];
                List<int> prim = new List<int>();

                for (int i = 0; i < n; i++)
                {
                    check[i] = false;
                }

                for (int i = 2; i < (int)Math.Floor((decimal)Math.Sqrt(n)); i++)
                {
                    if (!check[i])
                    {
                        prim.Add(i);
                        for (int j = i * i; j < n; j += i)
                        {
                            check[j] = true;
                        }
                    }
                }
                for (int i = (int)Math.Floor((decimal)Math.Sqrt(n)) + 1; i < n; i++)
                {
                    if (!check[i])
                    {
                        prim.Add(i);
                    }
                }
                return prim;
        }

        static void Main(string[] args)
        {
            int number;
            do
            {
                Console.WriteLine("Bis zu welchem Maximalwert sollen alle Primzahlen gesucht werden?: ");
            } while (!int.TryParse(Console.ReadLine(), out number) || number < 2);
            List<int> primzahlen = Primzahlsucher(number);

            int zaehler = 1;
            foreach (int item in primzahlen)
            {
                Console.WriteLine("{0,5}.:   {1,10}", zaehler++, item);
            }
            Console.ReadLine();
        }
    }
}

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben