OldComp.cz http://oldcomp.cz/ |
|
Práce v jazyce C s velkými čísly http://oldcomp.cz/viewtopic.php?f=113&t=5434 |
Stránka 1 z 1 |
Autor: | _dworkin [ 11.07.2017, 21:20 ] |
Předmět příspěvku: | Práce v jazyce C s velkými čísly |
Když už jsem vedle nakousl ten projekt Euler https://projecteuler.net/ tak jsem u některých úloh při "mírně" zvednuté obtížnosti rychle narazil na to, že běžné podporované číselné typy nejsou dostatečné. Na ZX Spectru už byl problém u 3. úlohy, kde se to už muselo řešit složitěji. Ale na 64 bitovém procesoru to není o moc lepší. V 5. úloze je problém vypsat výsledek. Že číslo které je dělitelné jedničkou, dvojkou, trojkou až číslem tisíc beze zbytku je rovno 2*2*2*2*2*2*2*2*2*3*3*3*3*3*3*5*5*5*5*7*7*7*11*11*13*13*17*17*19*19*23*23*29*29*31*31*37*41*43*47* 53*59*61*67*71*73*79*83*89*97*101*103*107*109*113*127*131*137*139*149*151*157*163*167*173*179*181* 191*193*197*199*211*223*227*229*233*239*241*251*257*263*269*271*277*281*283*293*307*311*313*317* 331*337*347*349*353*359*367*373*379*383*389*397*401*409*419*421*431*433*439*443*449*457*461*463* 467*479*487*491*499*503*509*521*523*541*547*557*563*569*571*577*587*593*599*601*607*613*617*619* 631*641*643*647*653*659*661*673*677*683*691*701*709*719*727*733*739*743*751*757*761*769*773*787* 797*809*811*821*823*827*829*839*853*857*859*863*877*881*883*887*907*911*919*929*937*941*947*953* 967*971*977*983*991*997 vypíše i ZX Spectrum, ale jak to číslo vypadá vyřeší až https://defuse.ca/big-number-calculator.htm, a nebo nějaká knihovna. GCC rozšíření __uint128_t prostě nedokáže vyřešit vše. Tak jsem jednu napsal. Pracuje jen s unsigned long long long long... čísly. Před kompilací se zadá délka čísla. Umí základní operace jako sčítání, odčítání, násobení a dělení. A přidal jsem tam ještě druhou odmocninu, protože ta byla zatím potřeba. Nefunguje na principu číselných řetězců, ale vnitřně je to v binární formě. Tak snad se to někomu bude hodit. https://github.com/DW0RKiN/BigNum |
Autor: | faraon [ 11.07.2017, 21:37 ] |
Předmět příspěvku: | Re: Práce v jazyce C s velkými čísly |
Znáš bc? Kód: 71288652746650930531663841557142729206683588618858930404520019911543\
24087581111499476444151913871586911717817019575256512980264067621009\ 25146587100430513107268626814320019660997486274593718834370501543445\ 25237397452989631456749821282369562328237940110688092623177088619795\ 40791247754558049326475737829923352751796735248042463638051137034331\ 21478174685087845348567802188807537324992199567205693202909939089168\ 7487672697950931603520000 |
Autor: | Busy [ 12.07.2017, 09:01 ] |
Předmět příspěvku: | Re: Práce v jazyce C s velkými čísly |
Sprav to v jazyku LISP. Ten ma okrem takych beznych ciselnych typov aj jeden specialny: cele cislo potencialne neobmedzenej velkosti. Cize nim mozes pocitat s exaktnou presnostou lubovolne velke cisla. |
Autor: | baktra [ 12.07.2017, 09:47 ] |
Předmět příspěvku: | Re: Práce v jazyce C s velkými čísly |
Já jsem kdysi použil GMP. Tehdy jsem potřeboval rychle počítat s racionálními čísly (vyjádřenými jako dvojice čitatel,jmenovatel). Ale velká celá čísla knihovna také podporuje. |
Autor: | Panda38 [ 20.04.2021, 01:55 ] |
Předmět příspěvku: | Re: Práce v jazyce C s velkými čísly |
Přiživím se v tomto vlákně malou informací - vytáhl jsem na světlo svůj starší projekt: C++ knihovna pro dlouhá čísla integer a fixed-point. Rozsah do int256. http://www.breatharian.eu/hw/longint/index.html |
Stránka 1 z 1 | Všechny časy jsou v UTC + 1 hodina [ Letní čas ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |