east 发表于 2021-8-6 13:39:13

求:任意大数精简表达的方案

一个大数有几千位数字,比较长,有什么方法把大数转换成比较短的表达,计算后又能得到原大数数值,实现大数精确而简短的表达?

例如:以下大数A有2946位数字,可以转换成:888^999,又可以根据这个表达式计算出原大数的精确数值,这就是精简表达。但这是特例,是否任意大数都可以实现精简表达呢?(简短程度:表达式小于大数长度的四分之一),什么方案?

上例中A如下:
291442452478250310782535603950900043573276878800339074155878174371515047907089997307989324018467987051386421242680381047034018354720248627940441757303799382783730775515182342434155181681595298734040653167112388213743173309577771537050097233595171515197985510476073214600080520886543855872656844401771995312539375986019731911073484758955581364408465109360596639270799821012607851273379731083749102415901577644715714906372201822585957315150736004336781850452514727545253843047844238329617644166346276001660706399955938501116460089032461821832198166178706146840650732952202300073978546042808324858543800243508008097774521988655822934245723910425087491613999109394381667242008252322673084836611569607195773181495155901593611070836176064365579568506812924247476501823052546586062307396352389011688060403437209895212580928367933972127232394442497650281173124641190688718368558319305977470393782385189459467469687160300605599214650109453720307006930097685642296824140142279052390734372510557685255374283105318613695532361741764444070172392561874030501162834402479559236541989819567510153665309688745744774818499539555478547039327657659774263679085485069148607990716792460218359464666183761797726076111224820682468938491218722274684863775488806522076623661958189211978426764107432137213261837822108352337031672223997930807139460210405925794981800381609932364227050939411362926678906081820334343889076837723020033223831258580220050975782627383182236781531494201480233757134445812041021654789492050636729131050449361828751413029805201061614103906721390921334589885208698898444812746662012081532572686099941201633012270806912242984655898579359091224308942155538771099060964388340762879232703157023968017158370103603278964424547931480187534765967535116416268304585118363487611462448210281778377231309169194458614587415888364545867741635618022984999702377407437640052922492784706600246698225635464942177359227615217191449062216944868886574574065982663521463351254255169191774841217110743742425197146636751035786153330100359926543186463494734179543554056334714161428043781875232595209348373896775664598178431731937377972339162681720525001794250503532375080361706141632582357289270004865650350699600937296838534731062407306417075364929717119877333231236808451709085237934416759508305797636226423535071944238196994651125162517530134340661257017542344152044604323804606822626345147117483760785877353984979557633662160472889051408044623631696508739016789521338679507731908139506602490148318603168695134722734341175896985683234257263841406018339045051922658056944858272450829923708489012190800316979010119271631550687356463836035921606575442979155952173087111874221534225341561656791990682619049102052978965872115043939907542565433650760221467641742108971758317613286491445924354143922138559938842398492211142993205134497106567870775490968053284658214915517376500774079333591090977542932915425109186343104100381734839588162426791447280043547004190035715970094333952

补充内容 (2021-8-8 10:40):
任意大数的精简表达,这个问题,我还不知道是否有解,是不是一个数学界的难题。在国内外网络上都搜不到对应的结果。我需要有一个函数,输入的是任意大数,输出的是精简表达的字符串。我在研究解决思路,欢迎交流

northwolves 发表于 2021-8-8 07:59:26

天文数字理论上可行,小点的数字反而很难。可以使用幂,阶乘等减去一个近似的大数字,达到降次的效果。
比如9801,表示成$99^2$并没什么效果

wayne 发表于 2021-8-8 09:53:04

这个 本质上 属于 编码与解码的范畴.

无心人 发表于 2021-8-18 18:52:48

对大数求对数,
然后除以若干小整数对数,
找最接近整数的那个小整数
得到第一个幂,
依次迭代

wayne 发表于 2021-8-18 19:33:04

无心人 发表于 2021-8-18 18:52
对大数求对数,
然后除以若干小整数对数,
找最接近整数的那个小整数


你这种方法 带有很强的先验形式, 一定是找 a^b的形式。如果是形如 a^b+c^d, a*b^c+d*e^f就没办法了。
页: [1]
查看完整版本: 求:任意大数精简表达的方案