0

I'm trying to do an problem from Project Euler and it involves doing computation on large numbers. I know long is used to assign big numbers, but when I compile it gives me the following error:

error: integer number too large: 600851475143 long num = 600851475143;

This is my code:

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);
}

1 Answers1

9

Without an added L num is interpreted as an integer whose max is 231-1.

long num = 600851475143L;

l can also be used but looks too much like a 1 so the former is recommended

For more see JLS ยง3.10.1

Reimeus
  • 158,255
  • 15
  • 216
  • 276