Search code examples
javaprimitivetype-conversion

Working with really big numbers


please have a look at the following code

import java.util.ArrayList;
import java.util.List;

public class Big
{
    static  int primeNumber = 2;


    public static void main(String[]args)
    {
        int numberDevident = 147;
        int left=0;
        int result=0;

        List numbers = new ArrayList();

        while(true)
        {
            result = numberDevident/primeNumber;

            left = numberDevident%primeNumber;

            if(left!=0)
            {
                primeNumber++;
            }
            else
            {
                numbers.add(primeNumber);
                numberDevident = result;

                System.out.println(primeNumber);
            }
        }
    }


}

This code find the prime factors of a given number (Variable "numberDevident" in the code"). But, there is a case, that is, the given number is 600851475143

It is no way matching to int, long or double. How can I solve this using this much of a big number? Please help

Here I am doing the same with BigInteger

import java.math.BigInteger;
import java.util.ArrayList;
import java.util.List;

public class Problem3
{
    static  BigInteger primeNumber = new BigInteger("2");
    static BigInteger zero = new BigInteger("0");
    static BigInteger add = new BigInteger("1");


    public static void main(String[]args)
    {
        BigInteger numberDevident = new BigInteger("147");
        BigInteger left= new BigInteger("0");;
        BigInteger result=new BigInteger("0");;

        List numbers = new ArrayList();

        while(true)
        {
            result = numberDevident.divide(primeNumber);

            left = numberDevident.remainder(primeNumber);

            if(left!=zero)
            {
                primeNumber.add(add);
            }
            else
            {
                numbers.add(primeNumber);
                numberDevident = result;

                System.out.println(primeNumber.toString());
            }
        }
    }


}

still no good, it is not displaying anything. Please help.


Solution

  • You might want to take a look at BigInteger.