Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.
Nástěnka
❗22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
❗04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
❗23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.
Nejste přihlášen(a). Přihlásit
Zdravím, chtěl bych se zeptat, zda nevíte na netu o nějakém zdrojovém kódu, který by ze zadaného přirozeného čísla vygeneroval dvě hodnoty reprezentující částečné odmocnění – číslo před odmocninou a číslo, které zůstane pod odmocninou. Např. zadáním čísla 384 bych měl dostat čísla 8 a 6, nebož sqrt(384) = 8*sqrt(6). Zkoušel jsem gůglit, ale neúspěšně, AI je na to pořád ještě hloupá.
Offline
↑ kastanek:
Jestli je AI hloupá na toto, tak je hloupá celkově. Ale to se asi dá čekat, že není radno AI vše věřit a bezmezně jí důvěřovat.
Offline
↑ Aleš13:
Tak princip je jasný, ale realizace už je jiný kafe. Já bych to nějak sesmolil, ale pro velká čísla by cykly procházely příliš mnoho čísel, bylo by to pomalé a asi bych to měl neohrabané. Tak jsem myslel nějaké hotové OPTIMALIZOVANÉ řešení.
↑ check_drummer:
Na moje dotazy AI odpovídá správně jen málokdy. V matematice snad nikdy. Ale zato si hodně vymýšlí.
Offline
↑ kastanek:
V principu to může běžet dlouho, protože rozklad na prvočísla je NP úplná úloha, jsou na tom založeny i některé metody šifrování.
Offline
Kód pro rozklad na prvočísla jde nalézt třeba zde: Odkaz
Offline
Nakonec jsem to poměrně úsporně vyřešil takto (v PHP). Pokud je v tom skrytý nějaký problém, napište sem prosím. Samozřejmě na extra velká čísla to použitelné není. Řeší to [mathjax]\sqrt{number}=pred\cdot \sqrt{pod}[/mathjax].
function odmocni($number,$cislo) { $pred=1; $pod=$number; for ($i=2; $i <= sqrt($number); $i++) { if (($pod>=$i*$i) and ($pod % ($i*$i) == 0)) { $pred=$pred*$i; $pod=$pod/($i*$i); $i=$i-1; } } if ($cislo==1) {return $pred;}; if ($cislo==2) {return $pod;}; } $number=384; echo odmocni($number,1)."*sqrt(".odmocni($number,2).")";
Offline
↑ kastanek:
Co ti to vrátí, když tomu dáš na vstup číslo 48?
Offline
↑ check_drummer:
Vyhodí to "4*sqrt(3)". Resp. to echo na konci kódu. Mám to z jistých důvodů rozdělené tak, že pomocí druhého parametru je na výstupu buď číslo před odmocninou, nebo číslo pod odmocninou.
Offline