Nejste přihlášen/a.

Přihlásit se do poradny

 

Úkol do IVT

Od: prosimpomoz odpovědí: 1 změna:

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ěď :)

 

 

1 odpověď na otázku
Řazeno dle hodnocení

 

 

nomad*
hodnocení

2x

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). ^^

 

 


 

 

 

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.

Používáním poradny vyjadřujete souhlas s personifikovanou reklamou, která pomáhá financovat tento server, děkujeme.

Copyright © 2004-2025 Poradna Poradte.cz. Všechna práva vyhrazena. Prohlášení o ochraně osobních údajů. | [tmavý motiv]