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 11

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 11 Všechny časy jsou v UTC + 1 hodina [ Letní čas ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/