java中使用素因子分解的最大公约数
正如你们所看到的,结果应该是2*2*3,而不是2*2。如何在整个arraylist中查找通用的数字序列,而不是像我的代码那样在arraylist的开头查找?您的while循环只查找两个列表的通用前缀。为了找到所有公共元素,您需要使用两个索引迭代两个java中使用素因子分解的最大公约数,java,prime-factoring,greatest-common-divisor,Java,Prime Factoring,Greatest Common Divisor,正如你们所看到的,结果应该是2*2*3,而不是2*2。如何在整个arraylist中查找通用的数字序列,而不是像我的代码那样在arraylist的开头查找?您的while循环只查找两个列表的通用前缀。为了找到所有公共元素,您需要使用两个索引迭代两个列表s: Rozkład na czynniki pierwsze liczby 36=2*2*3*3* Rozkład na czynniki pierwsze liczby 48=2*2*2*2*3* 2*2* 或者更好: ArrayLi
列表
s:
Rozkład na czynniki pierwsze liczby 36=2*2*3*3*
Rozkład na czynniki pierwsze liczby 48=2*2*2*2*3*
2*2*
或者更好:
ArrayList<Integer> liczbyPierwszeA = new ArrayList<Integer>();
ArrayList<Integer> liczbyPierwszeB = new ArrayList<Integer>();
List liczbyperwszea=new ArrayList();
List liczbyperwszeb=new ArrayList();
它给出了错误“if(liczbyperwszea.get(indexA)ArrayList
。原始ArrayList
类型可以包含任何对象。@EyeMaze我的错误。我忘了将索引更改为indexA
。现在修好了,好了,现在可以了。非常感谢你的帮助//是的,我注意到并纠正了问题:)
int indexA = 0;
int indexB = 0;
while (indexA < liczbyPierwszeA.size () && indexB < liczbyPierwszeB.size()) {
if (liczbyPierwszeA.get(indexA) == liczbyPierwszeB.get(indexB)) {
Wspolne.add(WspolneLicznik, liczbyPierwszeA.get(indexA));
indexA++;
indexB++;
WspolneLicznik++; // not sure what this counter is for. I kept it just
// in case it's needed
} else {
if (iczbyPierwszeA.get(indexA) < liczbyPierwszeB.get(indexB))
indexA++;
else
indexB++;
}
}
ArrayList<Integer> liczbyPierwszeA = new ArrayList<Integer>();
ArrayList<Integer> liczbyPierwszeB = new ArrayList<Integer>();
List<Integer> liczbyPierwszeA = new ArrayList<Integer>();
List<Integer> liczbyPierwszeB = new ArrayList<Integer>();