由于某种原因,我的val
变量在while循环内没有增加。任何理由为什么它不这样做? val.add(BigInteger.ONE);
BigInteger不增加?
import java.math.*;
public static void main(String[] args) {
/* Variables */
BigInteger PQ = new BigInteger("17");
BigInteger E = new BigInteger("7");
BigInteger val = new BigInteger("2");
/* Find the PRIME factors of PQ */
while (PQ.compareTo(BigInteger.ONE) == 1) { // while the first value is greater
if (PQ.mod(val).equals(BigInteger.ZERO)) {
System.out.print(val + " ");
} else {
val.add(BigInteger.ONE);
}
}
}
虽然['BigInteger.compareTo(的BigInteger VAL)'](https://docs.oracle.com/javase/8/docs/api/java/math/BigInteger.html#compareTo-java.math .BigInteger-)将返回值明确地列出为*“ - 1,0或1”*,最好是对从Comparable继承的更一般的契约进行编码,该契约表示*“一个负整数,零或一个正整数” *,所以你应该写'a.compareTo(b)> 0'而不是'a.compareTo(b)== 1'。它也读得更好,因为它意味着'a> b',即'a.compareTo(b)OP 0'意味着'一个OP b',其中'OP'可以''',''''' ,或'!='。 – Andreas