我正在尝试运行一个程序来计算方程式中缺少的第4个值,并且我一直用光内存。有没有办法保留在内存中,或者我需要以不同的方式设置代码格式?
import scala.util.control.Breaks._
val p1=1<<56
val p2=1<<52
val p3=0<<32
(1L to 100000000).par.foreach( (x: Long) =>{
if(((p1|p2)|(p3|x)).toLong==76561198036298569L)
{
println("FOUND: "+x)
break
}
})
最佳答案
您有很多选择(并且已经建议了类似的选择);您不必一定要在整数对象中存储整数;您宁可将它们存储为位序列,甚至存储在例如容器中一个列表(由于scala列表的链接列表性质而变慢,我建议使用BitSet或HashSet(因为常量和eC时间复杂度)。
TLDR;您可以通过以不同的方式存储它们(以执行速度为代价)而无需改变代码或来代表难以想象的大数字。
关于multithreading - 如何保持在内存的范围内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31681233/