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
Ahoj ↑ Skrblik:,
No pre taketo male cislo mozes najprv vypocitat priblizne druhu odmocninu a skusat systematicky delit tvoje cislo vsetkymy prvocislamy mensimy ako ta odmocnina. ( ak sa podari nejaky podiel bez zvysku, tak tvoje cislo nie je prvocislo; inac JE.. ak sa ziadne delenie nedalo cele cislo)
A vies dokazat preco funguje tato metoda?
Offline
↑ Skrblik:,
Nie to skor preto ak pre cislo napriklad n mas rozklad n=m*k tak jedno z tych cisiel je mensie ako odmocnina z n a druhe vedcie ako odmocnina z n .
To preto : ak obe by boli mensie (vedcie) ako odmocnina tak aj ich sucin by bol mensi (vedci) ako cislo n
Offline
↑ Skrblik: Existují i tzv. pravděpodobnostní testy. Většina z nich nějakým způsobem využívá tzv. malou Fermatovu větu: je-li p prvočíslo a čísla "a" je nesoudlné s číslem p, pak
dává zbytek 1 po dělení číslem p. Bohužel tato věta neplatí obráceně - tzn. neplatí, že pokud p je složené číslo, pak
nedává zbytek 1 po dělení číslem p. Ten zbytek 1 je nutná, ale ne postačující podmínka pro prvočíselnost.
Takže: vezměš vhodné číslo a nesoudělné s p, vypočítáš
a ověříš zbytek po dělení číslem p. Pokud
je 1, tak se MŮŽE jednat o prvočíslo (ale NEMUSÍ). Tzn. vybereš víc různých čísel "a" a pro ně provedeš ten samý test. Pokud ti aspoň jeden z nich nevyjde, jedná se určitě o složené číslo. Pokud všechny vyjdou, tak se jasná ASI o prvočíslo (pravděpodobnost se zvyšuje s počtem provedených testů). Je však zajímavé, že vyjde-li ti, že p je složené číslo (a to víš určitě, nejen asi), tak vlastně ani neznáš jeho dělitele.
Problematický krok se ti asi bude jevit určování zbytku čísla
po dělení číslem p, protože zpravidla p je hodně velké číslo. Existují na to vhodné metody, které vychází z teorie čísel (kongruence), které obvykle počítač zvládá relativně rychle (rozhodně řádově rychleji, než kdyby prostě jen hledal prvočíselné dělitele až do odmocniny z daného čísla), ale člověku trvají dlouho. Proto pro ruční ověřování prvočísel osobně doporučuji právě hledání prvočíselných dělitelů až po odmocninu z daného testu.
Jinak existují různé modifikace a vylepšení tohoto testu. Jedním z nich je tzv. Rabin-Millerův test a ten zrovna programuju u sebe na počítači. V podstatě jde o to, že se zesílí podmínka pro prvočíselnost (stále však ale není postačující), a tudíž se vyloučí více složených čísel, která by se v obyčejném Fermatově testu jevila jako pseudoprvočísla.
Offline
Mala fermatova veta:
cislo ktore chces overit, nech je X
"a" nech je lubovolne cele cislo ( najlepsie najmensie cele cize 2)
potom ak (a^X - a)/X je rovne celemu cislu, X je prvocislo. Ak (X^a - X)/a je rovne cislu s desatinym rozvojom, napr. 2,458... X nie je prvocislo.
Takto mozes overit akekolvek cislo, jedina nevyhoda je ze pri velkych prvocislach je to velmi neefektivne a zdlhave.
Napriklad ak by si chcel overit cislo 101 ci je prvocislo. Touto metodou by si najprv za "a" zvolil nejake cislo, najlepsie najmensie cize 2.
(2^101 - 2)/101 = (2535301200456458802993406410752 - 2)/101 = 25101992083727314881122835750 - toto je cele cislo, cize 101 je prvocislo.
Ale co ked budes musiet overit ci je 10000001 prvocislo?? To ti uz ani kalkulacka pri tejto metode nepomoze.. vtedy treba pouzit inu metodu.
Offline
↑ Matej1117: Vezměme tedy např. číslo 101. To rozepíšeme jako
(v podstatě se jedná o převod do binární soustavy). Tohle můžeš pomocí Hornerova schéma napsat taky jako
, a tedy
(*). To se zdá šílené, ale ve skutečnosti to taková hrůza není. Za chvíli uvidíš, proč.
---
Celý ten exponent si můžeš napsat ve tvaru "nejvnitřnější závorka * ten zbytek za závorkou". My si označíme nejvnitřnější závorku jako
, a to, co zbývá za závorkou, jako
. Celý výraz můžeš napsat jako
. Jenže číslo
spočítáš snadno. Označme výsledek jako b. Potom zřejmě
. Nyní využijeme následující tvrzení: pokud x, y dávají stejný zbytek po dělení číslem p, tak i čísla
,
dávají stejný zbytek. Tudíž: chceme-li zůstat v co nejmenších číslech, tak vypočítáme si zbytek po čísla b po dělení číslem p, označíme jej c. Určitě bude platit, že
(**). A protože čísla b, c dávají stejný zbytek po dělení číslem p, tak
,
jistě dávají stejný zbytek. Stačí ti tedy už jen určit, jaký zbytek dává číslo
po dělení číslem p, což je stejný problém, jaký jsme řešili na začítku, až na to, že r má o jednu závorku méně než šílený exponent u původního problému (*).
---
Počet závorek je ale nejvýše
, což ani pro opravdu velká p není závratně velké číslo. Navíc každý jednotlivý krok je pro počítač zvládnutelný, protože v podstatě v každém kroku počítá pouze dva výpočty:
(1) určuje zbytek čísla b po dělení číslem p
(2) určuje číslo
, kde z je ale vzhledem ke struktuře Hornerova schémata vždy roven buď 2, nebo 3, zatímco p je podle (**) menší než p. Takže se umocňuje číslo menší než p na druhou nebo na třetí, což ani pro velká vstupní čísla p není neuskutečnitelné.
---
A tyto kroky se opakují tak dlouho, dokud už ti v aktuálním r nezbude žádná závorka. Takto se dají spočítat zbytky opravdu velkých čísel ve tvaru "něco na něco", kde to "druhé něco" je hodně velké číslo.
Offline
Ahoj↑ Anonymystik:,↑ Matej1117:,
Vase uvahy su zaujimave... ale asi nepatria na srednu skolu...
Mozte otvorit na tuto temu novu temu na urovni Vysoka Skola
Offline