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 に答える