将大数字作为函数中的参数传递?

时间:2014-04-02 03:04:23

标签: java biginteger bignum

我正在尝试编写一个函数来计算给定数n的所有素因子。我有那个部分,但是,我不知道怎么用244825004422之类的大数字来做这个。我怎样才能优化myPrimeFactors方法来处理真正庞大的数字?到目前为止,这是我的代码。感谢。

到目前为止我所做的并不起作用,因为它说我的数字超出了我的参数范围。

import java.math.BigInteger;
public class myFactors {
    public static void main(String [] args){
        BigInteger reallyBig = new BigInteger("244825004422");
        myPrimefactors(244825004422);
    }

public static BigInteger myPrimefactors(int n){
        while ( n % 2 == 0){
            System.out.println("2");
            n = n/2;
        }
        for (int i = 3; i <= Math.sqrt(n); i = i + 2) {
            while (n % i == 0){
                System.out.println(i);
                n = n/i;
            }
        }
        if (n > 2)
            System.out.println(n);
    }
}

1 个答案:

答案 0 :(得分:1)

你尝试过吗?:

public BigInteger myPrimefactors(BigInteger n) {...}

此外,在您的示例中,您应该传递您创建的BigInteger值:

myPrimefactors(new BigInteger("244825004422"));