Java支持任意大小的数字吗



使用Java,我正试图解决一系列问题,比如:

编写一个打印所有素数的程序。(注意:如果您的编程语言不支持任意大小的数字,那么将所有素数打印到您可以轻松表示的最大数字也是可以的。)

它们的意思是"所有到n的素数"吗?我如何知道Java是否支持任意大小的数字?如果支持,它是什么?

Java的基元具有定义良好的范围。例如,int的范围在-231和232-1之间。您可以在Java教程中看到完整的详细信息。如果要表示比long基元允许的更大的整数(即263-1),则必须使用BigInteger类。

打印所有素数的程序将是一个不停止的程序。素数有无穷多,所以你可以永远运行这个程序。

大多数语言中的基本数字类型都有一定的内存空间,因此它们可以表达的数字范围有限。例如,Javaint存储在4个字节中。这将使不间断素数程序变得不可能,因为你最终会得到一个大于你能存储的最大数的素数。

除了基元数字类型外,许多语言还具有任意大小的数字类型。当你存储更多的数字时,它们使用的内存量会增加。Java有用于此目的的BigInteger,而Python默认情况下只是以这种方式存储所有数字。

然而,即使是这些任意大小的数字,最终也会受到程序可以访问的内存量的限制。实际上,不可能打印所有素数

你试图解决的问题陈述实际上是在说,他们不想让你为此烦恼只需使用您语言中的标准数字类型。没有一个系统能够计算无限多个素数。他们想让你做的是编写计算无限多素数的算法,给定一个能够这样做的系统和数据类型。

也许他们本可以措辞得更好。简而言之:不用担心。

最新更新