1

请看下面的代码

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


}

这段代码求给定数的质因数(代码中的变量“numberDevident”)。但是,有一种情况,即给定数是 600851475143

它无法匹配 int、long 或 double。我怎样才能用这么大的数字来解决这个问题?请帮忙

在这里我对 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());
            }
        }
    }


}

仍然不行,它没有显示任何东西。请帮忙。

4

1 回答 1

6

你可能想看看BigInteger

于 2012-06-30T18:07:36.760 回答