找到一个真正强大的数字

Pea*_*Gen 3 java math

我正在为学生创建一个小游戏,在一个地方,它必须显示2 7830457 +1 的值

如果数字不是那么大,我可以调用BigInteger的pow()方法.由于数量很大,这种方法毫无用处.我怎样才能找到这种数字的巨大力量?请帮忙!

tsk*_*zzy 8

好吧二进制它只是10000...017830456零.

在十进制中,将有大约两百万个数字,大约2兆字节的存储空间.这完全在BigInteger使用默认堆大小的可行性范围内.

在实践中,它甚至通过平方来使用取幂来快速计算它(虽然不能通过规范保证).然而,转换为a String将需要一些时间,因为它是线性时间操作.

import java.math.BigInteger;

public class BigPow {
    public static void main(String[] args) {
        BigInteger result = (new BigInteger("2")).pow(27830457).add(BigInteger.ONE);
        System.out.println(result);
    }
}
Run Code Online (Sandbox Code Playgroud)

这是一个会慢慢打印数字的版本:

import java.math.BigInteger;

public class BigPow {
    public static void main(String[] args) {
        BigInteger result = (new BigInteger("2")).pow(27830457).add(BigInteger.ONE);
        BigInteger powten = BigInteger.TEN.pow(2357202);

        while(powten.compareTo(BigInteger.TEN) > 0) {
            BigInteger digit = result.divide(powten).mod(BigInteger.TEN);
            System.out.print(digit);
            powten = powten.divide(BigInteger.TEN);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

第一个数字是:

27337386390628313557307248857732033008168556429738078791761607160549944954510637855005417718646965163546351365984857761796847950377880836291434244529029919271706271982523405687134334692691344477538489450971091437463160940371624647030064741968436401566711255284353690448270545402444641547030399228243743315193608710148721648879085592699913299745785392609301774185427367430782834290629265859073814466687714408436025809860462926275610087354595992436000187216152954542774991509992374985538879880897902639600451627914923043483436514419544413306391278529303650112773297502090619459167888563274071587848623085880067091968911236296732119252937497152769541579516150659424997041968213122450568364121976474269097910635641227922923398092242409755554115985855831015459204780391470591543281267373716556272259386683864538263922398723602210173800151405332100275913619559563575829498369806957031526077258236305186254269056811134135133350936924294101345294335698866339561918857584229744277901180792029180156485000086528174400878657004645726892816943589969701053158760210512171516969813345080894134663207988962182426459128577282934948790911691329475034324656384238413230485050607666988301932660490870167246016897007835866691705399794247746213819662270451531049826029606671683482160663572103374

WolframAlpha证实.