我正在尝试编写一个函数来计算给定数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);
}
}
答案 0 :(得分:1)
public BigInteger myPrimefactors(BigInteger n) {...}
此外,在您的示例中,您应该传递您创建的BigInteger值:
myPrimefactors(new BigInteger("244825004422"));