IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
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í.
Avatar
Týna
Člen
Avatar
Týna:18.11.2017 22:24

Ahoj, potřebovala bych radu.
Mám napsaný program, který vypíše prvočíselné dvojice mezi vámi zadanými čísly. Program funguje, jen když je číslo začátku intervalu větší než dvě, protože to považuje za prvočísla i záporná čísla, nulu a jedničku. Zajímalo by mě tedy, jak se to dá ošetřit, abych nemusela zmenšit interval. Dík.

 
Odpovědět
18.11.2017 22:24
Avatar
krepsy3
Tvůrce
Avatar
krepsy3:19.11.2017 14:12

Jednoduše - kolekci čísel k vyšetření nejprve proiteruj a veškerá čísla menší než 2 z ní vyhoď a až tuhle výslednou kolekci předej svému hledacímu algoritmu :)

Nahoru Odpovědět
19.11.2017 14:12
Programátor je stroj k převodu kávy na kód.
Avatar
plelovsky
Člen
Avatar
plelovsky:20.11.2017 10:11

protože to považuje za prvočísla i záporná čísla, nulu a jedničku

Pak ten program na hledání prvočísel funguje špatně. Prvočíslo je přirozené číslo větší než 1, které kromě jedničky a sebe není dělitelné žádným jiným přirozeným číslem.

abych nemusela zmenšit interval

Proč? Prvočísla má smysl hledat pouze v přípustném rozsahu prvočísel, kde nejnižší hranice je 2. Takže se bude hledat od většího ze zadané spodní hranice a čísla 2.
Jinak řečeno: když zadám rozsah pro hledání od -50 do 3, tak nalezená prvočísla jsou 2, 3.

 
Nahoru Odpovědět
20.11.2017 10:11
Avatar
krepsy3
Tvůrce
Avatar
Odpovídá na plelovsky
krepsy3:20.11.2017 10:19

Jinak řečeno: když zadám rozsah pro hledání od -50 do 3, tak nalezená prvočísla jsou 2, 3

...což ovšem nejsou prvočíselná dvojčata :D

Mimoto, to, že autorka nechce omezovat inzerval "navenek" je určitě dobrá věc, a jestliže má dobrý algoritmus se zmíněnou negativní vlastností, nemyslím si, že je problém použít mé řešení - přeci jen - funguje to stejně, výsledek se nezmění, ale program skutečně "prohledá" celý zadaný interval :)

Nahoru Odpovědět
20.11.2017 10:19
Programátor je stroj k převodu kávy na kód.
Avatar
plelovsky
Člen
Avatar
Odpovídá na krepsy3
plelovsky:20.11.2017 10:38

...což ovšem nejsou prvočíselná dvojčata

To jsem sice netvrdil, ale ok, zadání je hledat prvočíselné dvojice. K tomu však potřebuji nalézt ta prvočísla :-)

 
Nahoru Odpovědět
20.11.2017 10:38
Avatar
plelovsky
Člen
Avatar
plelovsky:20.11.2017 10:59

Zdá se mi to lepší nějak takto:

for (int i = Math.Max(startValue, 2); i <= endValue; i++)
{
    //zpracovani
}

než takto:

for (int i = startValue; i <= endValue; i++)
{
    if (i < 2) continue;
    //zpracovani
}
 
Nahoru Odpovědět
20.11.2017 10:59
Avatar
krepsy3
Tvůrce
Avatar
krepsy3:20.11.2017 16:18

Spíš takto, protože ty neuvažuješ původní zadání autorky

...vypíše prvočíselné dvojice mezi vámi zadanými čísly.

Takže bych to viděl nějak takto:

//int[] zadanaCisla - načtená kolekce
List<int> cisla = new List<int>();
foreach (int i in zadanaCisla)
{
        if (i ≥ 2) cisla.Add(i);
}

NajdiDvojce(cisla); //vstupní bod hledacího algoritmu
Nahoru Odpovědět
20.11.2017 16:18
Programátor je stroj k převodu kávy na kód.
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.