Úkol do IVT

Od: Datum: 08.06.16 21:37 odpovědí: 1 změna: 08.06.16 22:42

Dobrý den, nevíte, jak mám udělat tento úkol do IVT?

zadání: Napis program (Pascal,Lazarus), kde je řada čísel.První číslo je N a to mě říká, kolik bdue následovat čísel a pak by se mělo určit jestli se jdná o rpvočíslo nebo ne.

Předem děkuji za odpověď :)


Seznam odpovědí:
 
moment čekejte prosím, probíhá přenos dat...
Zobrazení struktury odpovědí v otázce
Skrytí struktury odpovědí v otázce
Zobrazení struktury odpovědí v otázce

 

Odpovědi na otázku:
Datum: 08.06.16 22:42

Takže je na vstupu zadána řada n, x1, ... xn?

Pokud není třeba nějak optimalizovat, stačí každé číslo dělit v cyklu čísly 2 ... x/2 (většími čísly už zřejmě x v celých číslech nepodělíme). Pokud x modulo dělitel vyjde 0, pak x není prvočíslo. Při prvním podělení beze zbytku tedy vyskočit z cyklu a určit, že x není prvočíslem. Pokud x projde vším dělením, pak prvočíslem je. Na rozhodnutí stačí booleanová proměnná.

Sudá čísla vypadají hned na x mod 2. První optimalizací pak bude cyklus po lichých dělitelech, tedy od 3 se skokem 2. Zadaná čísla má navíc smysl dělit jen prvočísly, to by mohla být další optimalizace. A vymyslelo by se toho jistě víc, to už záleží na Vás.

doplněno 08.06.16 22:53:

Vlastně stačí dělitelé do x/3, x/2 dělí pouze sudá čísla a ta nepotřebujete. Vše mezi x/2 a x/3 pak zřejmě nepodělí x beze zbytku.

Také by se dalo např. rovnou dělit v cyklu 3 a x/3, 5 a x/5 ... dokud (dělitel <= x/dělitel). Taková optimalizace se snadno implementuje a výrazně sníží počet iterací cyklu.

doplněno 08.06.16 23:00:

Nuže v tom doplňku jsem to překombinoval a je to samozřejmě nesmysl, jde o to, že při troše přemýšlení stačí dělitelé do sqrt(x). ^^

Ohodnoceno: 2x
 

 

 

Přihlásit se k odběru odpovědí z této otázky:

Neneseme odpovědnost za správnost informací a za škodu vzniklou jejich využitím. Jednotlivé odpovědi vyjadřují názory jejich autorů a nemusí se shodovat s názorem provozovatele poradny Poradte.cz

 
Copyright © 2004-2016 Poradna Poradte.cz. Všechna práva na poradně Poradte.cz vyhrazena.