Java 为什么我的if语句总是返回false?(返回值始终为0)
函数“spd”用于查找整数y的最小素数因子。 但是,当我运行代码时,无论“y”的值是什么,返回的值总是0Java 为什么我的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
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
。