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í
×
    dnes 17:33 | Nová verze

    Canonical vydal (email, blog, YouTube) Ubuntu 24.04 LTS Noble Numbat. Přehled novinek v poznámkách k vydání a také příspěvcích na blogu: novinky v desktopu a novinky v bezpečnosti. Vydány byly také oficiální deriváty Edubuntu, Kubuntu, Lubuntu, Ubuntu Budgie, Ubuntu Cinnamon, Ubuntu Kylin, Ubuntu MATE, Ubuntu Studio, Ubuntu Unity a Xubuntu. Jedná se o 10. LTS verzi.

    Ladislav Hagara | Komentářů: 3
    dnes 14:22 | Komunita

    Na YouTube je k dispozici videozáznam z včerejšího Czech Open Source Policy Forum 2024.

    Ladislav Hagara | Komentářů: 0
    dnes 13:22 | Nová verze

    Fossil (Wikipedie) byl vydán ve verzi 2.24. Jedná se o distribuovaný systém správy verzí propojený se správou chyb, wiki stránek a blogů s integrovaným webovým rozhraním. Vše běží z jednoho jediného spustitelného souboru a uloženo je v SQLite databázi.

    Ladislav Hagara | Komentářů: 0
    dnes 12:44 | Nová verze

    Byla vydána nová stabilní verze 6.7 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 124. Přehled novinek i s náhledy v příspěvku na blogu. Vypíchnout lze Spořič paměti (Memory Saver) automaticky hibernující karty, které nebyly nějakou dobu používány nebo vylepšené Odběry (Feed Reader).

    Ladislav Hagara | Komentářů: 0
    dnes 04:55 | Nová verze

    OpenJS Foundation, oficiální projekt konsorcia Linux Foundation, oznámila vydání verze 22 otevřeného multiplatformního prostředí pro vývoj a běh síťových aplikací napsaných v JavaScriptu Node.js (Wikipedie). V říjnu se verze 22 stane novou aktivní LTS verzí. Podpora je plánována do dubna 2027.

    Ladislav Hagara | Komentářů: 0
    dnes 04:22 | Nová verze

    Byla vydána verze 8.2 open source virtualizační platformy Proxmox VE (Proxmox Virtual Environment, Wikipedie) založené na Debianu. Přehled novinek v poznámkách k vydání a v informačním videu. Zdůrazněn je průvodce migrací hostů z VMware ESXi do Proxmoxu.

    Ladislav Hagara | Komentářů: 0
    dnes 04:11 | Nová verze

    R (Wikipedie), programovací jazyk a prostředí určené pro statistickou analýzu dat a jejich grafické zobrazení, bylo vydáno ve verzi 4.4.0. Její kódové jméno je Puppy Cup.

    Ladislav Hagara | Komentářů: 0
    včera 22:44 | IT novinky

    IBM kupuje společnost HashiCorp (Terraform, Packer, Vault, Boundary, Consul, Nomad, Waypoint, Vagrant, …) za 6,4 miliardy dolarů, tj. 35 dolarů za akcii.

    Ladislav Hagara | Komentářů: 12
    včera 15:55 | Nová verze

    Byl vydán TrueNAS SCALE 24.04 “Dragonfish”. Přehled novinek této open source storage platformy postavené na Debianu v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    včera 13:44 | IT novinky

    Oznámeny byly nové Raspberry Pi Compute Module 4S. Vedle původní 1 GB varianty jsou nově k dispozici také varianty s 2 GB, 4 GB a 8 GB paměti. Compute Modules 4S mají na rozdíl od Compute Module 4 tvar a velikost Compute Module 3+ a předchozích. Lze tak provést snadný upgrade.

    Ladislav Hagara | Komentářů: 0
    KDE Plasma 6
     (72%)
     (9%)
     (2%)
     (17%)
    Celkem 759 hlasů
     Komentářů: 4, poslední 6.4. 15:51
    Rozcestník

    Dotaz: JAVA - dokonalá čísla

    20.11.2012 19:37 já
    JAVA - dokonalá čísla
    Přečteno: 1529×
    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í).
    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
    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.
    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.
    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.