Java 为什么我的if语句总是返回false?(返回值始终为0)

Java 为什么我的if语句总是返回false?(返回值始终为0),java,Java,函数“spd”用于查找整数y的最小素数因子。 但是,当我运行代码时,无论“y”的值是什么,返回的值总是0 public static BigInteger spd (int y) { ArrayList<BigInteger> primes = new ArrayList<BigInteger>(); int retval; int Nth_prime = 10000; BigInteger getn; BigInteger y

函数“spd”用于查找整数y的最小素数因子。 但是,当我运行代码时,无论“y”的值是什么,返回的值总是0

public static BigInteger spd (int y) {

    ArrayList<BigInteger> primes = new ArrayList<BigInteger>();

    int retval;
    int Nth_prime = 10000;
    BigInteger getn;
    BigInteger y2 = BigInteger.valueOf(y);
    BigInteger TWO = new BigInteger("2");
    BigInteger bi = new BigInteger("1");

    primes.add(TWO);

    int i = 1;

    while (i < Nth_prime) {
        bi = bi.add(TWO);
        if (bi.isProbablePrime(40)) {
            i++;
            primes.add(bi);
        }
    }

    BigInteger zero = new BigInteger ("0");
    BigInteger ret;
    BigInteger one  = new BigInteger ("1");

    for (int n = 0; n < y2.intValue(); n++) {
        if (y2.mod(primes.get(n)).equals(zero)) {
            retval = primes.get(n).intValue();
        }
    }   

    BigInteger returning = BigInteger.valueOf(retval);

    return returning;
}
公共静态大整数spd(整数y){
ArrayList primes=新的ArrayList();
内部检索;
int n_素数=10000;
大整数;
BigInteger y2=BigInteger.valueOf(y);
BigInteger二=新的BigInteger(“2”);
BigInteger bi=新的BigInteger(“1”);
加上(两个);
int i=1;
while(i
这是带有初始化和一些重构的代码:

public static BigInteger spd(int y) {

    ArrayList<BigInteger> primes = new ArrayList<BigInteger>();

    int retval = 0;
    int Nth_prime = 10000;
    BigInteger y2 = BigInteger.valueOf(y);
    BigInteger TWO = new BigInteger("2");
    BigInteger bi = new BigInteger("1");

    primes.add(TWO);

    int i = 1;

    while (i < Nth_prime) {
        bi = bi.add(TWO);
        if (bi.isProbablePrime(40)) {
            i++;
            primes.add(bi);
        }
    }

    BigInteger zero = new BigInteger("0");

    for (int n = 0; n < y2.intValue(); n++) {
        if (y2.mod(primes.get(n)).equals(zero)) {
            retval = primes.get(n).intValue();
        }
    }

    return BigInteger.valueOf(retval);
}
公共静态大整数spd(整数y){
ArrayList primes=新的ArrayList();
int-retval=0;
int n_素数=10000;
BigInteger y2=BigInteger.valueOf(y);
BigInteger二=新的BigInteger(“2”);
BigInteger bi=新的BigInteger(“1”);
加上(两个);
int i=1;
while(i
该代码甚至没有编译,因为变量
retval
没有初始化。我已经执行了代码(初始化变量
retval=0
)传递
y=500
,返回值为
5