abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×

včera 19:00 | Komunita

Na Humble Bundle lze získat počítačovou hru Sanctum 2 (Wikipedie, YouTube) běžící také v Linuxu zdarma. Speciální akce končí v sobotu v 19:00.

Ladislav Hagara | Komentářů: 0
včera 15:44 | Komunita

Projekt LiMux skončil. Mnichov se vrací k Windows. Rada města na svém včerejším zasedání schválila migraci všech počítačů na Windows 10 do roku 2020.

Ladislav Hagara | Komentářů: 18
včera 08:00 | Pozvánky

V Praze dnes probíhá konference Internet a Technologie 17.2 pořádaná sdružením CZ.NIC. Sledovat ji lze online. K dispozici je také archiv předchozích konferencí. Sdružení nedávno vydalo bezpečnostní pexeso. Ke stažení jako pdf pod licencí CC BY-NC-SA.

Ladislav Hagara | Komentářů: 0
včera 07:22 | Nová verze

Byla vydána verze 10.2 a krátce na to opravná verze 10.2.1 open source alternativy GitHubu, tj. softwarového nástroje s webovým rozhraním umožňujícího spolupráci na zdrojových kódech, GitLab (Wikipedie). Představení nových vlastností v příspěvku na blogu a na YouTube.

Ladislav Hagara | Komentářů: 20
včera 06:22 | Pozvánky

V úterý 28. listopadu se v Brně koná již 4. přednáškový večer Ruby Stories. Těšit se můžete na témata jako TDD, hybridní mobilní aplikace či programování v Elixiru. Více informací na Facebooku nebo se rovnou registruj na Eventbrite. Na místě bude zdarma drink a lehké občerstvení, tak dorazte.

ondrej-zadnik | Komentářů: 0
včera 06:11 | Pozvánky

V úterý 28. 11. 2017 bude další Prague Containers Meetup. DC/OS a Mesos vás provede Mesosphere's Developer Advocate Matt Jarvis.

little-drunk-jesus | Komentářů: 0
23.11. 14:44 | Komunita

Mozilla.cz informuje, že Firefox bude možná upozorňovat na úniky vašich hesel. V Mozille prototypují upozorňování na únik informací o vašem účtu, pokud se na seznamu Have I been pwned? objeví služba, ke které máte ve Firefoxu uložené přihlašovací údaje. Informace se objevila v pravidelném newsletteru o vývoji Firefoxu.

Ladislav Hagara | Komentářů: 7
23.11. 00:22 | Bezpečnostní upozornění

Společnost ZONER informuje o bezpečnostním incidentu, při kterém došlo ke zcizení a zveřejnění části přihlašovacích údajů zákazníků k elektronické poště a webhostingu CZECHIA.COM.

Ladislav Hagara | Komentářů: 1
22.11. 23:44 | Nová verze

Byla vydána nová stabilní verze 1.13 (1.13.1008.32) webového prohlížeče Vivaldi (Wikipedie). Z novinek vývojáři zdůrazňují možnost zobrazení otevřených i uzavřených listů pomocí ikonky Okno na postranní liště a vylepšené stahování (YouTube). Nejnovější Vivaldi je postaveno na Chromiu 62.0.3202.97.

Ladislav Hagara | Komentářů: 17
22.11. 20:55 | Nová verze

Byla vydána verze 2017.3 dnes již průběžně aktualizované linuxové distribuce navržené pro digitální forenzní analýzu a penetrační testování Kali Linux. Aktualizovat systém lze pomocí příkazů "apt update; apt dist-upgrade; reboot". Z novinek lze zmínit 4 nové nástroje: InSpy, CherryTree, Sublist3r a OSRFramework.

Ladislav Hagara | Komentářů: 2
Jak se vás potenciálně dotkne trend odstraňování analogového audio konektoru typu 3,5mm jack z „chytrých telefonů“?
 (9%)
 (1%)
 (1%)
 (1%)
 (75%)
 (14%)
Celkem 768 hlasů
 Komentářů: 37, poslední 21.11. 15:21
    Rozcestník

    Dotaz: JAVA - dokonalá čísla

    20.11.2012 19:37 já
    JAVA - dokonalá čísla
    Přečteno: 1208×
    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: 74 | blog: Výlevníček | 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í).
    Why did the multithreaded chicken cross the road? to To other side. get the
    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: 74 | blog: Výlevníček | JO70FB
    Rozbalit Rozbalit vše Re: JAVA - dokonalá čísla
    Tak teď už fakt nevím, jestli si děláš prdel, nebo ne :-D
    Why did the multithreaded chicken cross the road? to To other side. get the
    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: 74 | blog: Výlevníček | 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.
    Why did the multithreaded chicken cross the road? to To other side. get the
    Jendа avatar 22.11.2012 01:08 Jendа | skóre: 74 | blog: Výlevníček | 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.
    Why did the multithreaded chicken cross the road? to To other side. get the
    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.