这是Java中的一个方法,它将生成一个包含前100,000,000个斐波那契数的ArrayList,这样这些斐波那契数都不能被任何较小的平方数整除。
因此,BigInteger Java类被实现为处理异常大订单的数字。
已经发现,在编写 if 语句时,使用 && 和 || 等逻辑运算符不适用于 BigInteger 类,如下面的代码所示。
注释已从代码中删除,以便于在此页面上阅读。
非常感谢您的贡献。
public ArrayList<BigInteger> squareFree () {
index = 0;
fibValues_noSqr = fibValues;
ArrayList<BigInteger> squares = new ArrayList<BigInteger>();
int sqrScan;
for (index = 0; index < fibValues_noSqr.size(); index++) {
squares.add(BigInteger.valueOf(powerOf(index + 2, 2)));
}
for (index = 0; index < fibValues_noSqr.size(); index++) {
for (sqrScan = 0; sqrScan < fibValues_noSqr.size(); sqrScan++) {
if (squares.get(index).compareTo(fibValues_noSqr.get(sqrScan)) < 0 || squares.get(index).equals(fibValues_noSqr.get(sqrScan)) && fibValues_noSqr.get(sqrScan).remainder(squares.get(index))) {
fibValues_noSqr.remove(sqrScan);
}
}
}
}
在此场景中,Java 显示以下错误
运算符 && 未定义参数类型布尔值,BigInteger
感谢您@GBlogett和@Compass的回复。
这是工作代码
public ArrayList<BigInteger> squareFree () {
index = 0;
fibValues_noSqr = fibValues;
ArrayList<BigInteger> squares = new ArrayList<BigInteger>();
int sqrScan;
for (index = 0; index < fibValues_noSqr.size(); index++) {
squares.add(BigInteger.valueOf(powerOf(index + 2, 2)));
}
for (index = 0; index < fibValues_noSqr.size(); index++) {
for (sqrScan = 0; sqrScan < fibValues_noSqr.size(); sqrScan++) {
if (squares.get(index).compareTo(fibValues_noSqr.get(sqrScan)) < 0
&& fibValues_noSqr.get(sqrScan).mod(squares.get(index)) == new BigInteger("0")) {
fibValues_noSqr.remove(sqrScan);
}
}
更新的 if 语句
for (index = 0; index < fibValues_noSqr.size(); index++) {
for (sqrScan = 0; sqrScan < fibValues_noSqr.size(); sqrScan++) {
if (squares.get(index).compareTo(fibValues_noSqr.get(sqrScan)) < 0
&& fibValues_noSqr.get(sqrScan).mod(squares.get(index)).equals(BigInteger.ZERO)) {
fibValues_noSqr.remove(sqrScan);
}