mathe版主太强悍了:
{11, 78697156}
{12,747607554}
{13,10952402703}
{14,254230157940}
{15,4409739261144}
{16,38129989457749}
{17,73425462387019}
{18,18553374137359214}
{19,27036908878375100}
{20,1053338431686717460}
{21,54689167234912149096}
{22,678416028962620804329}
{23,67506358514042349427267}
{24,269813938614269935089647}
{25,15692675077152583530475263}
{26,3249409848323679470950820601}
{27,152415296418180704590430039377}
{28,235416761121826259799659838990}
{29,16535663182019102188442276887157}
{30,810415231911788111377651219003976}
{31,10544557460581936579558067276668148}
{32,1197782629592123463783543449092817865}
{33,18756484661617397618163820501601543428}
{34,89727081800693450682690722049041240223}
{35,13842247250774412463650168103284702138299}
{36,58305768765108830229979905124396088982863}
{37,13010173991967318000851078625487819595258380}
{38,9659062885516827969937487886077131465422305069}
{39,15054848214571617105833381916518378481787995783}
{40,1158929801156829098826415013935506368282793479672}
{41,46680665028336473122794711203577760045422869880728}
{42,428450420952612691302699206399514331551965361296822}
{43,228010103531151113248827308211447234315826669962186828}
{44,45234495639786238063187267140199631500663927967879712437}
{45,646740189533060291702801528139243894847875357816058997650}
{46,19015415804437843305867658935309600433890503601262889759261}
{47,33422371743681587412749482033742910252608665006480874508300}
{48,33237148285958821037561271177217332979896721700610298546987688}
{49,1412494610889451120919806012623681553193221464068972443527934655}
{50,80562251000261012604148370478020158097737482266504413125871305785477}
{51,8316780037842175600234523451786889438567227010714322212855780356115}
{52,155964911263133157637137979149875176994986402940459385932841101487055}
{53,13344506740235091360273132806965606676593848451639730216043096924091894}
{54,507501516891355932039470966612309086886891655066651802016351591301876226}
{55,829505215818588757376410693133323995247702101094033822273157533292325145}
{56,17058079828557489931555040813264540394465634797728599860182232068487403550}
{57,80719457604921524009988961803860466682182949957616213614435033146834095236922}
{58,1620423970743904233684281535989872457511803524178693023831740433693487478356525}
{59,790656517715501180026452512104230906258466754438916308310132008264274278402651447}
{60,2053382547892756640072376274936319934188094570899939324543916890822572959549117540}
{61,454712188102005362913768948863773795257591198769931632677998362555208684029675585672}
{62,89684721421729548209378290075654166111066487963339135784237095092676711830261234092214}
{63,1842333867688406429630236556410195965167208537078613182121803154543461074731074353265539}
{64,3698998920486588965447648659437035457737781980566695209302158701191665295382017351357442451}
{65,26786490141009392529408913298139092882473213394731139076983364292652040008912982197298050119}
{66,364348349710870445494266433872891195272125273801560636899335484763755288630324712562440966336}
{67,34876150923167290627997215892354616927502206911658943882784261492119241482423222556858281372825}
{68,8177167019615424474174846289797656470864911557214322760485196546038226348105046739833873969862902}
{69,76142949228580773786708896761842720022186025571326223371542117834678595658447445261537318896863753}
{70,6669579395601370594230946535193423451695408204756182298532486180991933024051223486062484970734426483}
{71,97307084409935119513341720658090288924567279732955995476528343446395462135068001185584766855865905216}
{72,85795397820804232180406244045489066528971342562442540897439579460058075357132942948577831558654407747308}
{73,1534827448069194645744935085259273284872197398552496680917141239826408104753546988761698172199427929855298}
{74,290333764030664789648174521028175317130044732428316246888223988651678872352752967485024998621128196194608565}
{75,14383265390392692697946816044017697750951043185905201697457091491156801544221689543022499855252615881088055379}
{76,1063387197926080464365645728829601882581575529944361257548354305088044899278465455383337187113934418173947812132}
{77,102217301410252548619240381183027514289969740594944652397840491591115310717385769765172709989209145530105868993052}
{78,51526815168980908338128634668314226707663061447461947695317362863944347495993272306906697433607554099225573241144696}
{79,4263170093814046646138787094959110692696932801238221142576084386624659329758423436381081151758025207948392767456252707}
{80,53158015636995510655041794074559467715106176074301814835723585023653067112350755406262093262634484015264563426820479217}
{81,13475414036201321766031716319092329897589788870277065438609742267322971900833008212255640015299828408342528473855643648674}
{82,421875949760975312110047264468489215189333769238237114799215957545999552366493915149594430002819896662812822137059767535962}
{83,201728337159743908613391627755460006362785521437998801659754794726779289901363419233132243176866023999204100278487163177975017}
{84,9265505762715712253430434392413228886582266385278953008378669404970973114411182858587789927328720234915587049519124550065831413}
{85,851333306961305541792414417396775519342672270601136455519798923210672215154989265713520059630618895952640449598480199939883227916}
{86,37480588935968249505170895134433537774659904367625418007768338670213811403762226148927459947730485330599275627407906656551558961099}
{87,5160670222097556575214254335380493148109322795633001100569705305673537737880642985618585759371056809609711229006843936934282811628533}
{88,146442144137385049139290463840239205212705430787295176101245565850888586910739392047440270121463902586431365376146110185391136226623934}
{89,858160146819463388519219841908688224723805153984517559064219679219077262182728270752375965626290790002808110815398783118835151960416806331}
{90,2446479012525697123797681212294816733692164788029168279365970301139379950894392387266651076530176485351387830646021216173714444387227739277}
{91,180595203651652609810247529683785115473213217557814220077528408157285984939750934356168764040353126256793135735197903241847903454677665997022}
{92,4290679588651805107778719168798870697711044201192152429750891594751377907292597504747518360198014591727538139460528449495155275178428975287877}
{93,15057595352828639455681187382573543333955859149378077938851771721097624455016860598945425334759735643655649856981156062941592002067507750354835725}
{94,127952473656186906277693681889057556598174764880506308501268014127273227742286325959848846512370420497037576871317249673564516813596617625423072215}
{95,1902579376329245315922706197715694679605956653425771641530820118856305012857692211594425724002948193889920466306221546586558372716832824732180535114}
{96,2200922959152973184454944936397401507109501687060049982436201258312054188100808902724557290532507971086760567503228927990278988876394955946074579138434}
{97,11431966017531767602639222518153005237750758350857635546940101770167466199082451299366680397364326025021945588047789555614602381886948270275531567141577517}
{98,12466380040558566358237689552737671550839855021965336156651441357082309272226573498875591083495225030053972347643657863860654699418524454493126534413007074}
{99,1031852675860545794050710812760298993279537259860731178980175085316445235076594570190097397618337793918772289761639736648470062618683203745433535049236117073}
如此11,13,17,19的计算已没必要,我申请删除了
t={0,1,8,92,116,88277,588458,58481,260426,-1,78697156,747607554,10952402703,254230157940,4409739261144,38129989457749,73425462387019,18553374137359214,27036908878375100,1053338431686717460,54689167234912149096,678416028962620804329,67506358514042349427267,269813938614269935089647,15692675077152583530475263,3249409848323679470950820601,134535058864917802155619756354};Length@t
Table[{r,t[],r!,Floor-1+Mod]*Log10,500],1])],(r!)==Floor-1+Mod]*Log10,500],1])]},{r,Length@t}]//Grid
27
1 0 1 1 True
2 1 2 2 True
3 8 6 6 True
4 92 24 24 True
5 116 120 120 True
6 88277 720 720 True
7 588458 5040 5040 True
8 58481 40320 40320 True
9 260426 362880 362880 True
10 -1 3628800 999999 False
11 78697156 39916800 39916800 True
12 747607554 479001600 479001600 True
13 10952402703 6227020800 6227020800 True
14 254230157940 87178291200 87178291200 True
15 4409739261144 1307674368000 1307674368000 True
16 38129989457749 20922789888000 20922789888000 True
17 73425462387019 355687428096000 355687428096000 True
18 18553374137359214 6402373705728000 6402373705728000 True
19 27036908878375100 121645100408832000 121645100408832000 True
20 1053338431686717460 2432902008176640000 2432902008176640000 True
21 54689167234912149096 51090942171709440000 51090942171709440000 True
22 678416028962620804329 1124000727777607680000 1124000727777607680000 True
23 67506358514042349427267 25852016738884976640000 25852016738884976640000 True
24 269813938614269935089647 620448401733239439360000 620448401733239439360000 True
25 15692675077152583530475263 15511210043330985984000000 15511210043330985984000000 True
26 3249409848323679470950820601 403291461126605635584000000 403291461126605635584000000 True
27 134535058864917802155619756354 10888869450418352160768000000 10888869450418352160768000000 True
上面northwolves帮忙找到了一个bug了,代码位置在:
t2=if(d>0, findk2(U,M,2*d,-1), findk2(U,M,-2*d,1));
if(t2==0, print("Out of precision");pass=-1;break());
dt=if(d>0, M-(t2*U)%M, (t2*(U+1))%M);
dt2=if(d>0, floor(d/dt),floor(-d/dt));
if(dt2==0,dt2=1);
t=t+dt2*t2;
实际计算过程
M=10^500, t=1426623746182861807587649405 ,findk2函数返回t2=1986693061473655826090031447
于是计算得到dt2=floor(d/dt)为76.
这部分的内容表明,前一步找到t以后,((t*U)%M)/M 同我们目标值中心C/M的差距大约为d/M,而这时findk2函数得出,每次将t增加t2, 这个差值可以缩写一个不超过dt/M的值,
由此,为了加快速度,我这里直接连续增加dt2=floor(d/dt)个t2, 可以得到一个结果,离中心值的差距减少到尽量小,得到一个很好的逼近值。
但是问题是我们并不需要得到最好的逼近值,而是只要进入区域(V,R)即可,所以这里就有可能需要减去一个较小的值即可。
a(256)=3001520031498157343918002320805904033330925069276411197902262585300301870660923278125466177326354841337777378510929019584242082860065211771877061916892896240087959424725510239085324675368830718148569865746690110593110241886980844921733160184826371171679291963244041493539918154893615616770600065553147382821490180889166440908145898159744785979607880317997180323838173481949255604098635838737115499502596493597216476709626361736542891053034956108747771136327829748869394647925865269559645312016962939322115053
a(135)=1176857458577758515799815472531739153782916060749953638879914362167872666358575470522892742377266657722593186522230698721525384452180365157269446918017100913538333007865897632411874278842834612634851548377468758417402063226861395393
我的2,3,5,7各算了一天才算到16或17,mathe版主太令人震撼了!膜拜ing.