abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    včera 18:33 | Nová verze

    Byla vydána (𝕏) nová verze 24.7 open source firewallové a routovací platformy OPNsense (Wikipedie). Jedná se o fork pfSense postavený na FreeBSD. Kódový název OPNsense 24.7 je Thriving Tiger. Přehled novinek v příspěvku na fóru.

    Ladislav Hagara | Komentářů: 0
    včera 05:11 | Bezpečnostní upozornění

    Binarly REsearch upozorňuje na bezpečnostní problém PKFail (YouTube) v ekosystému UEFI. Stovky modelů zařízení používají pro Secure Boot testovací Platform Key vygenerovaný American Megatrends International (AMI) a jeho privátní část byla při úniku dat prozrazena. Do milionů zařízení (seznam v pdf) po celém světě tak útočníci mohou do Secure Bootu vložit podepsaný malware. Otestovat firmware si lze na stránce pk.fail. Ukázka PoC na Linuxu na Windows na YouTube.

    Ladislav Hagara | Komentářů: 11
    včera 02:22 | Nová verze

    Mobilní operační systém /e/OS (Wikipedie) založený na Androidu / LineageOS, ale bez aplikací a služeb od Googlu, byl vydán ve verzi 2.2 (Mastodon, 𝕏). Přehled novinek na GitLabu. Vypíchnuta je rodičovská kontrola.

    Ladislav Hagara | Komentářů: 2
    včera 01:22 | IT novinky

    Společnost OpenAI představila vyhledávač SearchGPT propojující OpenAI modely umělé inteligence a informace z webů v reálném čase. Zatím jako prototyp pro vybrané uživatele. Zapsat se lze do pořadníku čekatelů.

    Ladislav Hagara | Komentářů: 0
    včera 00:11 | Nová verze

    Distribuce Linux Mint 22 „Wilma“ byla vydána. Je založená na Ubuntu 24.04 LTS, ale s desktopovým prostředím Cinnamon (aktuálně verze 6.2), příp. MATE nebo Xfce, balíkem aplikací XApp, integrací balíčků Flatpak a dalšími změnami. Více v přehledu novinekpoznámkách k vydání.

    Fluttershy, yay! | Komentářů: 2
    25.7. 17:44 | Zajímavý článek Ladislav Hagara | Komentářů: 2
    25.7. 17:22 | Nová verze

    Byla vydána nová verze 14 integrovaného vývojového prostředí (IDE) Qt Creator. Podrobný přehled novinek v cgitu. Vypíchnout lze podporu rozšíření v Lua.

    Ladislav Hagara | Komentářů: 0
    25.7. 17:11 | Nová verze

    Byla vydána verze 1.80.0 programovacího jazyka Rust (Wikipedie). Podrobnosti v poznámkách k vydání. Vyzkoušet Rust lze například na stránce Rust by Example.

    Ladislav Hagara | Komentářů: 0
    25.7. 14:11 | IT novinky

    Apple oznámil, že v beta verzi spustil své Apple Maps na webu. Podporován je také webový prohlížeč Chrome. Ne však na Linuxu.

    Ladislav Hagara | Komentářů: 23
    25.7. 13:11 | IT novinky

    Portál Stack Overflow po roce opět vyzpovídal své uživatele, jedná se především o vývojáře softwaru, a zveřejnil detailní výsledky průzkumu. Průzkumu se letos zúčastnilo více než 65 tisíc vývojářů. Z Česka jich bylo 710. Ze Slovenska 246.

    Ladislav Hagara | Komentářů: 0
    Rozcestník

    Dotaz: JAVA - dokonalá čísla

    20.11.2012 19:37 já
    JAVA - dokonalá čísla
    Přečteno: 1536×
    Potřeboval bych napsat program, který bude vypisovat všechna dokonalá čísla, vůbec si stím nevim rady děkuji.

    Téma:

    Dokonalá čísla: přirozené číslo je dokonalé, je-li rovno součtu všech svých kladných dělitelů vyjma sebe sama, např. 6=1+2+3. Napište program, který vyhledá všechna dokonalá čísla z intervalu <1,n> a zapíše je do výstupního souboru. Parametry: n, výstupní soubor.

    Řešení dotazu:


    Odpovědi

    20.11.2012 20:04 DK
    Rozbalit Rozbalit vše Re: JAVA - dokonalá čísla
    tak zjisti vsechny delitele (for cyklus od i=2 treba do cislo/2, muze to byt i odmocnina z cisla), ty sectes, pokud to bude sedet, je to cislo dokonale...
    20.11.2012 20:22 l4m4
    Rozbalit Rozbalit vše Re: JAVA - dokonalá čísla
    Takový program lze nahradit programem, který prostě vypíše po řadě čísla 6, 28, 496 a 8128, protože následující dokonalé číslo už je tímto naivním algoritmem za dobu životnosti počítače nedosažitelné.

    Chceš-li jich vypsat alespoň o pár víc, tak záleží na tom, zda přistoupíš na hypotézu, že neexistuje liché dokonalé číslo (krom 1, které lze v závsilosti na definici také označit za dokonalé). Ta není dokázána, ale existuje-li, je jistě větší než cca 101500, to už dokázáno je. Předpokládejme tedy, že neexistuje.

    Najít sudá dokonalá čísla lze snáz. Mají všechna tvar 2p−1(2p−1), kde p je prvočíslo. Čísla tohoto tvaru jsou sudá dokonalá čísla právě tehdy, když 2p-1 je také prvočíslo. Tudíž stačí ověřit prvočíselnost čísel tohoto tvaru. Tím by ses mohl dostat i s poměrně naivním algoritmem ověřování prvočíselnosti tak o tři dokonalá čísla dál.
    20.11.2012 20:45 l4m4
    Rozbalit Rozbalit vše Re: JAVA - dokonalá čísla
    Nebo takto: Udělej si statickou tabulku s čísly typu long obsahující po řadě:

    6, 28, 496, 8128, 33550336, 8589869056, 137438691328, 2305843008139952128

    Postupně ji procházej a vypisuj čísla, dokud nepřekročí zadané n. Jakmile překročí, vypisování ukonči.

    Toto samozřejmě není ‚školní‘ řešení. Toto je řešení, které by se použilo v praxi: když je něco neměnné, blbě se to určuje a není toho moc, tak se to tabeluje. Když potřebuješ v programu π, tak taky použiješ tabelovanou hodnotu, nepočítáš ho pokaždé znovu.
    21.11.2012 16:41 Jardík
    Rozbalit Rozbalit vše Re: JAVA - dokonalá čísla
    Řešení je jednoduché. Sdělíš zadavateli, že takový program napsat NELZE. Žádný program není schopný vypsat všechna dokonalá čísla, třeba i proto, že jich může být nekonečné množství.
    21.11.2012 18:53 jehovista
    Rozbalit Rozbalit vše Re: JAVA - dokonalá čísla
    Zrejme ti unikla cast "z intervalu <1,n>"
    21.11.2012 19:16 Jardík
    Rozbalit Rozbalit vše Re: JAVA - dokonalá čísla
    To bude asi tím, že je někdo blbej a nedočte si dotaz do konce ^^. Každopádně pokud to n není omezeno, měl by použít něco jako BigInteger, když použije nějakej ten int, tak mu program nebude fungovat správně při zadání "velkého" n, i když než by mu ho to stejně spočítalo, tak prožije 10 životů. Pokud n omezeno je (např. Integer.MAX_VALUE) tak bude nejlepší ona již navržená tabulka. Pokud ji zadání nezakazuje, zadání splní.
    21.11.2012 19:25 Jardík
    Rozbalit Rozbalit vše Re: JAVA - dokonalá čísla
    Ještě si nesmím odpustit připomínku, že bohužel takhle kokotsky se dneska vyučuje programování na spoustě škol, řešit ptákoviny, které byly milionkrát vyřešeny, zbytečné ztrácení času, místo skutečného vyučování programování. Kdyby jim vyučující místo toho přečetl kapitolu ze standardu daného jazyka a vysvětlil ji, udělal by líp. Sečíst a vynásobit dvě čísla umí i cvičená opice.
    Jendа avatar 21.11.2012 20:25 Jendа | skóre: 78 | blog: Jenda | JO70FB
    Rozbalit Rozbalit vše Re: JAVA - dokonalá čísla
    Sečíst a vynásobit dvě čísla umí i cvičená opice.
    Tazatel zjevně studuje programování a přitom nedodal ani naivní řešení (třeba s žádostí o pomoc s optimalizací).
    Před 3 lety měli očkovaní do 3 let zemřít a měla nastat covidová totalita.
    22.11.2012 09:12 já
    Rozbalit Rozbalit vše Re: JAVA - dokonalá čísla
    Příloha:
    program v příloze vypisuje čísla do 8128 a pak už to nic nevypíše!tak nevim jestli to mám brát jako dobrý zapis či nikoli! když to má být z intervalu <1,n>

    Jendа avatar 22.11.2012 09:53 Jendа | skóre: 78 | blog: Jenda | JO70FB
    Rozbalit Rozbalit vše Re: JAVA - dokonalá čísla
    Tak teď už fakt nevím, jestli si děláš prdel, nebo ne :-D
    Před 3 lety měli očkovaní do 3 let zemřít a měla nastat covidová totalita.
    22.11.2012 13:07 l4m4
    Rozbalit Rozbalit vše Re: JAVA - dokonalá čísla
    Prostě jen nečetl nic, co zde mezitím bylo o dokonalých číslech napsáno...
    21.11.2012 20:28 l4m4
    Rozbalit Rozbalit vše Re: JAVA - dokonalá čísla
    Řešení klasických problémů v žádném případě není na škodu. A nalezení vhodného algoritmu je jedna ze základních dovedností skutečného programátora.

    Ale proboha na úloze, kde to má smysl. U hledání dokonalých čísel mám pouze možnosti (a) tabelace těch známých (b) napsání programu, který příčetném čase najde houby (c) ponoření se do douhého studia teorie čísel.
    21.11.2012 23:12 karel
    Rozbalit Rozbalit vše Re: JAVA - dokonalá čísla
    Tohle je spíš ideální případ, jak učit studenty přemýšlet o problému. Vsadím se, že polovina lidí co dostane něco takového zadané, napíše naivní algoritmus a pustí to přes noc. Ráno zjistí, že to pořád běží, tak si řekne. "Na netu jsem četl, že java je pomalá, napíšu to v C." Opět to pustí přes noc. Pak si bude na konci semestru v hodnocení předmětu stěžovat na nesmyslná zadání od učitelů. Přitom správný postup je říct, že to nejde a proč. To ale stojí daleko víc námahy.

    Skutečně jsem se s tím několikrát ve škole setkal. Třeba jednou týpek plánoval naprogramovat paralelní program na cluster, aby spočítal optimalizační verzi NP úplné úlohy na grafu o 1000 uzlech.

    22.11.2012 00:41 l4m4
    Rozbalit Rozbalit vše Re: JAVA - dokonalá čísla
    V případě dokonalých čísel ovšem nejde o to, že to nejde.

    Ono to jde. Předně rozdělím situaci na případy, kdy n je menší než 101500, pak vím, že všechna dokonalá čísla jsou tvaru, který jsem uvedl. V případě, že je n větší, jedu hrubou silou, na tom asi pak opravdu prd záleží...

    Takže potřebuji ověřovat prvočíselnost čísel tvaru 2p-1. To opět jde. Kdo má lepší základy teorie čísel, ví, že ověřování prvočíselnosti lze dělat efektivněji než rozkladem. A konkrétně na čísla tvaru 2p-1 existují zase speciální algoritmy.

    Etc.

    Kdyby se jednalo o problém, který je tak těžký, že naivní algoritmus je naprd a state of the art algoritmus je taky naprd, tak budiž. Student zjistí, že některé problémy jsou prostě přesně neřešitelné a je třeba užít lepší či horší heuristiky. Lze diskutovat, jaké heuritstické metody se dají používat na problémy přesně neřešitelné. Například klasický problém obchodního cestujícího.

    Kdyby se jednalo o problém, kde naivní algoritmus už je přijatelně efektivní, ale state of the art algoritmus je nějaký super-efektivní nebo má nějaké jiné pěkné vlastnosti, to je OK. Student nevymyslí state of the art agloritmus, ale dokáže napsat něco, co něco smysluplného dělá, a lze pak diskutovat, jak by to šlo zlepšit. Například rozklad na prvočísla: i poměrně naivní algoritmus faktorizuje cokoli v rozsahu 64bitového integeru za jednotky sekund.

    Problémy, kde jakýkoli algoritmus, který dokáže vymyslet student, je naprd, přitom ale existují algoritmy založené na pokročílých teoriích, které to řeší úplně jinak -- a efektivně, tak takové problémy sice ukáží, že někdy je zapotřebí ke správnému řešení pokročilá matematika, ale z hlediska výuky programování je to depresivní a positivního si z toho student neodnese nic. A to je přesně hledání dokonalých čísel.
    Jendа avatar 22.11.2012 01:02 Jendа | skóre: 78 | blog: Jenda | JO70FB
    Rozbalit Rozbalit vše Re: JAVA - dokonalá čísla
    Já bych to tak černě neviděl. Vyučující chtěl prostě zadat studentům nějaký takový problém, na kterém ukážou, že pochopili, co je to for a if, a místo „Eratosthenovo síto po sto šedesáté osmé“ vybral tohle. Proto bych čekal obdobně naivní implementaci jako u toho síta - i když pro hledání prvočísel také máme lepší algoritmy.
    Před 3 lety měli očkovaní do 3 let zemřít a měla nastat covidová totalita.
    Jendа avatar 22.11.2012 01:08 Jendа | skóre: 78 | blog: Jenda | JO70FB
    Rozbalit Rozbalit vše Re: JAVA - dokonalá čísla
    Přitom správný postup je říct, že to nejde a proč. To ale stojí daleko víc námahy.
    Nevím, jestli je možné tohle očekávat od někoho, kdo právě zápasí s for cyklem, tj. ve výuce se asi nedostali tak daleko k tomu, aby dělali (značně složitou) analýzu, jak a proč počítat dokonalá čísla způsobem, který popisuje l4m4.
    Před 3 lety měli očkovaní do 3 let zemřít a měla nastat covidová totalita.
    21.11.2012 20:36 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: JAVA - dokonalá čísla
    Objevit kolo je to nejlepší, jak pochopit jak funguje.
    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
    21.11.2012 23:08 Ivan
    Rozbalit Rozbalit vše Re: JAVA - dokonalá čísla
    Jeste bych dodal, ze i pouziti Javy a BigIntegeru je spatny napad. BigInteger je velice obecny typ pro velka cisla a jeho pouziti je dost pomale. Java opravdu neni urcena na numericku.

    22.11.2012 09:43 já
    Rozbalit Rozbalit vše Re: JAVA - dokonalá čísla
    Příloha:
    program v příloze vypisuje čísla do 8128 a pak už to nic nevypíše!tak nevim jestli to mám brát jako dobrý zapis či nikoli! když to má být z intervalu <1,n>
    22.11.2012 10:48 Atom321 | skóre: 20
    Rozbalit Rozbalit vše Re: JAVA - dokonalá čísla
    Na to je potřeba umět nejen psát, ale i číst. Odpověď už v diskusi je.

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.