2016-09-15 76 views
0

我刚开始学习Groovy,我试图运行一个非常大数目(600851475143)的极限循环。每个循环我打印当前的数字。Groovy - 使用大数字

问题是我执行代码后,GroovyConsole和一些在我的电脑上运行的程序卡住了。我知道这是因为在执行Groovy脚本期间正在使用很多内存。

下面是Groovy脚本:

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

println "Largest Prime: $max" 

我的问题是有什么办法来优化这个代码,以便它不会被卡住或者崩溃?

+1

控制台显然飞越了。所以如果你从循环中删除'println',它应该消耗更少的内存 – injecteer

回答

2

而是在Groovy的控制台运行,请尝试从一个命令行运行:

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

println "Largest Prime: $max"' 

然而,现在你有另外一个问题。假设您能够每秒打印出一万个数字(在我的Mac上可以合理估计我的结果),那么为了打印六千亿个数字,您需要六千万秒......这将近两年。

也许你应该先尝试一个稍小的数字。