在解决1-N最多约数问题时,用筛选法求解质数数列时,
需设置标志数组,byte [] flag = new byte[500000000],
但编译器报错,推展超出范围啦,我尝试更改参数,将堆栈扩大到800m,但仍然错误,而且机子很卡1,java 超大数组如何实现?2,那个标志法可不可用Bit 标识,类似一张位图,这样占用的空间会小 很多阿,java中有操作方法嘛?
需设置标志数组,byte [] flag = new byte[500000000],
但编译器报错,推展超出范围啦,我尝试更改参数,将堆栈扩大到800m,但仍然错误,而且机子很卡1,java 超大数组如何实现?2,那个标志法可不可用Bit 标识,类似一张位图,这样占用的空间会小 很多阿,java中有操作方法嘛?
比如1000000000000000000000000*10000000000000000000000000000,这个连编译都通不过。
你必须自己用字符串代替数值,然后自己写逢十进一的算法得出一个更大的字符串。
用bitmap也要大概
500000000/8/1024/1024mb的内存
占用已经相当多了
估计还是程序实现有问题
bitmap在java里面对应的是java.util.BitSet
但是需要高版本的jdk支持
class ByteFlag(){
private byte[][] byteFlag=new byte[1000][500000];
public byte getValue(int index){
return byteFlag[index/500000][index%500000];
}
public void setValue(int index,byte flag){
byteFlag[index/500000][index%500000]=flag;
}
}