"Integer number too large" error message for 600851475143

integer, java

Solution

`600851475143` cannot be represented as a 32-bit integer (type `int`). It can be represented as a 64-bit integer (type `long`). long literals in Java end with an "L": `600851475143L`

Problem

``` public class Three { public static void main(String[] args) { Three obj = new Three(); obj.function(600851475143); } private Long function(long i) { Stack<Long> stack = new Stack<Long>(); for (long j = 2; j <= i; j++) { if (i % j == 0) { stack.push(j); } } return stack.pop(); } } ``` When the code above is run, it produces an error on the line `obj.function(600851475143);`. Why?

Original source

Related problems