Groovy - 使用大数字

时间:2016-09-15 09:20:36

标签: optimization groovy biginteger

我刚刚开始学习Groovy而且我正在尝试运行一个非常大的数字限制的for循环(确切地说是600851475143)。每个循环我打印当前的数字。

问题是我执行代码后,GroovyConsole和我计算机中运行的一些程序卡住了。我知道这是因为在执行Groovy脚本时会使用很多ram。

这是groovy脚本:

BigInteger num = 600851475143
def max = 0
for(BigInteger i = 1; i < num; i++) {
    println i;
}

println "Largest Prime: $max"

我的问题是有没有办法优化这段代码,以免它卡住或崩溃?

1 个答案:

答案 0 :(得分:2)

尝试从命令行运行,而不是在Groovy控制台中运行:

$ groovy -e '
BigInteger num = 600851475143
def max = 0
for(BigInteger i = 1; i < num; i++) {
    println i;
}

println "Largest Prime: $max"'

然而,现在,你有另一个问题。假设你能够每秒打印出一万个数字(我的Mac上的结果是合理的近似值)那么,为了打印六千亿个数字,你将需要六千万个......这几乎是两年。 / p>

也许你应该首先尝试一些更小的数字。