Diskuze: Narocnost programu
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 10 zpráv z 10.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
bool jePrvocislo(int n)
{
if (n <= 2)
n = 2;
return (n >= 2);
}
Nezkoumal jsem zatím zbytek, ale tohle nevím jestli je k smíchu nebo k pláči
Jinak nejnaivnější řešení je tohle:
bool jePrvocislo(int n)
{
if (n <= 1)
return false;
for (int i = 2; i <= sqrt(n); i++)
if (n % i == 0)
return false;
return true;
}
Jak moc velký může být ten interval, kde máš hledat ta prvočísla?
Řekl bych, že celá 32b čísla, ale jestli nezvládl tohle, tak nevím jestli chtěli eratosthenovo síto nebo podobné věci
maximum 2000000000, typ int.
No, myslel jsem to tak, že by Erastotenes mohl být v určitých případech rychlejší, než zkoušet číslo po číslu (resp. zkoušet všechna lichá čísla v intervalu). Případně kombinace obojího.
Zadani znelo pouze vypsat prvocisla v zadanem rozsahu a osetrit vstupy. Nic
vic, ale to sito urcite zkusim. Pokud byste meli nejake dalsi tipy, rad se neco
priucim.
Martin Dráb
V tomhle případě potřebuješ cca 105 kroků, to v C nejsou ani milisekundy, Eratosthenes bude vždy efektivnější.
Zobrazeno 10 zpráv z 10.