Black Friday je tu! Využij jedinečnou příležitost a získej až 80 % znalostí navíc zdarma! Více zde
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í.
BF extended 2022
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í
+2,50 Kč
Ř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
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
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
Supertvůrce
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.