处理朱莉娅的大数字

Lij*_*eph 2 julia

在Python中,我可以执行以下操作来获取所有数字的总和N,其中N=99999 ** 99999.总和可以用sum(map(int,str(N))).

如何在Julia中找到N中所有数字的总和?

Chr*_*kas 5

你正在击中整数溢出.尝试使用BigInts.

julia> N=digits(big(99999)^99999)
499995-element Array{Int64,1}:
 9
 9
 9
 9
 9
 8
 9
 9
 9
 9
 ?
 5
 0
 8
 2
 1
 8
 8
 7
 6
 3
Run Code Online (Sandbox Code Playgroud)

请注意

julia> typemax(Int64)
9223372036854775807
Run Code Online (Sandbox Code Playgroud)

这是太小了,但BigInts是任意大小的.big(i)变成i一个大的(BigFloat如果它是一个浮点数,BigInt如果它是一个整数).Julia并不默认使用bigs /任意大小的数字,因为它们很慢,但是如果你调用它们,那么大多数调度的类型稳定性将传播大类型,因此big(i)^j最终会变大.