Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: oprava algoritmu na vyhledávání prvočísel

Aktivity
Avatar
Regedin the Immortal:23.3.2017 17:53

Zkoušel jsem vytvořit jeden program ke kterému jsem potřeboval nějaký jednoduchý algoritmus na vyhledávání prvočísel, protože mi přišlo celkem nepraktické do listu v kódu napsat 1000000 různých čísel. bohatě by postačilo třeba Erathostenovo síto, protože jenom potřebuji znát "dost" prvočísel k vyčíslení rieamannovy zeta funkce. Vytvořil jsem sice nějaké takové síto ale VS mi vyhazuje chybu a není mi moc jasné proč. Moje síto by mělo fungovat asi takhle

class Program
    {
        static void Main(string[] args)
        {
            Erathostenovo_sito sito = new Erathostenovo_sito();
            sito.dopln_prvocisla(1000);
            foreach(int cislo in sito.pole_prvocisla)
            {
                Console.WriteLine(cislo);
            }
            Console.ReadKey();
        }
    }

a třída pro síto

class Erathostenovo_sito
    {
        private int n;
        public List<int> pole_prvocisla = new List<int>();
        public void dopln_prvocisla(int horni_mez)
        {
            n = 2;
            while (n < 1000001)
            {
                pole_prvocisla.Add(n);
                n++;
            }
            n = 0;
            while (n < Math.Sqrt(horni_mez))
            {
                foreach(int cislo in pole_prvocisla)
                {
                    if (cislo % pole_prvocisla[n] == 0)
                    {
                        pole_prvocisla.Remove(cislo);
                    }
                }
                n++;
            }
        }
    }

ale u toho

foreach(int cislo in pole_prvocisla)
                {
                    if (cislo % pole_prvocisla[n] == 0)
                    {
                        pole_prvocisla.Remove(cislo);
                    }
                }

to vyhazuje nějakou chybu. Byl bych vděčný tomu kdo by mi to pomohl zprovoznit nebo nahradit něčím lepším :-)

 
Odpovědět
23.3.2017 17:53
Avatar
HONZ4
Člen
Avatar
Odpovídá na Regedin the Immortal
HONZ4:23.3.2017 18:03

nelze upravovat kolekci, kterou procházíš pomocí foreach. Použij jiný způsob, např. for

Editováno 23.3.2017 18:06
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
23.3.2017 18:03
Avatar
Odpovídá na HONZ4
Regedin the Immortal:23.3.2017 18:22

Díky moc, už to funguje :-)

 
Nahoru Odpovědět
23.3.2017 18:22
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.