Využij akce až 30 % zdarma při nákupu e-learningu. Více informací. Zároveň je tento týden sleva až 80 % na e-learning týkající se C# .NET
Hledáme nového kolegu do redakce - 100% home office, 100% flexibilní pracovní doba. Více informací.
discount week 30 halloween
Avatar
Tomáš Hauser:1.4.2018 23:28

Zdravím,
přemýšlel jsem, jak udělat vlastní metodu generující prvočísla.
Myslíte, že skoky jen po lichých číslech šetří výpočetní náročnost?
A máte nějakou univerzální univerzální metodu mimo knihoven?

static ArrayList PrimesArr(int Upper_Bound)
{
    ArrayList PrimesArr = new ArrayList();
    PrimesArr.Add(1);
    PrimesArr.Add(2);
    int i = 3;
    while (i <= Upper_Bound)
    {
        for (int j = 3; j < i; j += 2)
        {
            if (i % j == 0)
            {
                i += 2;
                j = 3;
            }
        }
        PrimesArr.Add(i);
        i += 2;
    }
    return PrimesArr;
}
 
Odpovědět
1.4.2018 23:28
Avatar
Odpovídá na Tomáš Hauser
Radek Chalupa:2.4.2018 7:05

Samozřejmě že snížení výpočetních cyklů urychlí výpočet. Ale hodně můžeš ušetřit (zejména u větších čísel) tím, že stačí zkoušet dělit maximálně do hodnoty druhé odmocniny testovaného čísla a nikoliv až do i-1, jak to tam děláš.

Radek Chalupa

  • individuální konzultace, školení programování, (C/C++, C#, WinAPI, .NET, COM, ATL, MFC...)
  • vývoj software na zakázku

http://www.radekchalupa.cz

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět
2.4.2018 7:05
Avatar
Tomáš Hauser:2.4.2018 13:08

To je pravda. Tak to abych to předělal na doubly všechno. :)

 
Nahoru Odpovědět
2.4.2018 13:08
Avatar
Odpovídá na Tomáš Hauser
Radek Chalupa:2.4.2018 17:34

To nemusíš, a ani bych to nedoporučoval, počítání s double je pomalejší než s int. Prostě si vždy před cyklem spočítáš tu mez, odmocninu jako double ořízneš do int a možná pro jistotu přicíst 1.

 
Nahoru Odpovědět
2.4.2018 17:34
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Tomáš Hauser:2.4.2018 17:48

Díky, zrychlilo se to z asi 3 vteřin na pár milisekund. :)

 
Nahoru Odpovědět
2.4.2018 17:48
Avatar
Luboš Běhounek Satik
Autoredaktor
Avatar
Odpovídá na Tomáš Hauser
Luboš Běhounek Satik:2.4.2018 18:37

Další fígl je třeba zkoušet dělit jen už nalezenými prvočísly

Nahoru Odpovědět
2.4.2018 18:37
https://www.facebook.com/peasantsandcastles/
Avatar
FiftypiSoftware
Super redaktor
Avatar
FiftypiSoftware:9.4.2018 9:10

Tak to také vyzkouším, dělit druhou odmocninou. Také jsem si dělal program na generování prvočísel a mám to podobně jako tady zadávající vlákna.

 
Nahoru Odpovědět
9.4.2018 9:10
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 7 zpráv z 7.