OldComp.cz

Komunitní diskuzní fórum pro fanoušky historických počítačů
Právě je 13 pro 2017, 04:26

Všechny časy jsou v UTC + 1 hodina




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 4 ] 
Autor Zpráva
 Předmět příspěvku: Práce v jazyce C s velkými čísly
PříspěvekNapsal: 11 črc 2017, 20:20 
Offline
Radil

Registrován: 23 čer 2013, 22:49
Příspěvky: 495
Has thanked: 25 times
Been thanked: 90 times
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


Nahoru
 Profil  
 
PříspěvekNapsal: 11 črc 2017, 20:37 
Offline
Profík
Uživatelský avatar

Registrován: 23 bře 2014, 19:13
Příspěvky: 972
Has thanked: 43 times
Been thanked: 200 times
Znáš bc?

Kód:
71288652746650930531663841557142729206683588618858930404520019911543\
24087581111499476444151913871586911717817019575256512980264067621009\
25146587100430513107268626814320019660997486274593718834370501543445\
25237397452989631456749821282369562328237940110688092623177088619795\
40791247754558049326475737829923352751796735248042463638051137034331\
21478174685087845348567802188807537324992199567205693202909939089168\
7487672697950931603520000

_________________
ČESKÝ SLAVÍK nad sebou vynesl ORTEL, má z ostudy KABÁT a MATTONI už není.


Nahoru
 Profil  
 
PříspěvekNapsal: 12 črc 2017, 08:01 
Offline
Pan Štábní

Registrován: 22 kvě 2013, 20:14
Příspěvky: 1727
Bydliště: Bratislava
Has thanked: 175 times
Been thanked: 309 times
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.


Nahoru
 Profil  
 
PříspěvekNapsal: 12 črc 2017, 08:47 
Offline
Radil
Uživatelský avatar

Registrován: 31 srp 2014, 15:27
Příspěvky: 311
Bydliště: Praha
Has thanked: 18 times
Been thanked: 82 times
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.


Nahoru
 Profil  
 
Zobrazit příspěvky za předchozí:  Seřadit podle  
Odeslat nové téma Odpovědět na téma  [ Příspěvků: 4 ] 

Všechny časy jsou v UTC + 1 hodina


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 1 návštěvník


Nemůžete zakládat nová témata v tomto fóru
Nemůžete odpovídat v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete přikládat soubory v tomto fóru

Hledat:
Přejít na:  
Založeno na phpBB® Forum Software © phpBB Group
Český překlad – phpBB.cz