2016-09-15 79 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上可以合理估計我的結果),那麼爲了打印六千億個數字,您需要六千萬秒......這將近兩年。

也許你應該先嚐試一個稍小的數字。