Java 在长变量中存储12位整数会导致编译错误,为什么?

Java 在长变量中存储12位整数会导致编译错误,为什么?,java,Java,我正试着做一个Euler项目的问题,它涉及到对大量数据的计算。我知道long用于分配大的数字,但当我编译时,它会给我以下错误: 错误:整数太大:600851475143长数值= 600851475143; 这是我的代码: public static void main(String[] args) { long bigDiv, div = 0; long num = 600851475143; bigDiv = 1; for(long i = 2; i < num; i++

我正试着做一个Euler项目的问题,它涉及到对大量数据的计算。我知道long用于分配大的数字,但当我编译时,它会给我以下错误:

错误:整数太大:600851475143长数值= 600851475143;

这是我的代码:

public static void main(String[] args) {
  long bigDiv, div = 0;
  long num = 600851475143;
  bigDiv = 1;
  for(long i = 2; i < num; i++)  {
     if(num % i == 0)  {
        for(long j = 2; j < i; j++) {
           if(i % j == 0)
              div++;
        }
        if(div == 0)
           bigDiv = i;
     }
  }
  System.out.println("Biggest prime divisor = " + bigDiv);
}
publicstaticvoidmain(字符串[]args){
long-bigDiv,div=0;
长数=600851475143;
bigDiv=1;
用于(长i=2;i
如果没有添加
L
num
将被解释为一个最大值为的整数

l
也可以使用,但看起来太像
1
,因此建议使用前者

欲了解更多信息,请参阅

long num = 600851475143L;