【发布时间】:2015-10-11 11:08:24
【问题描述】:
int a;
int b;
int iloscA = 0;
int iloscB = 0;
ArrayList liczbyPierwszeA = new ArrayList();
ArrayList liczbyPierwszeB = new ArrayList();
Scanner liczba = new Scanner(System.in);
System.out.println("Podaj a.");
a = liczba.nextInt();
System.out.println("Podaj b");
b = liczba.nextInt();
int a1 = a;
int b1 = b;
for (int i = 2; i <= a; i++) {
while (a % i == 0) {
// System.out.print(i + "*");
liczbyPierwszeA.add(iloscA, i);
iloscA++;
a = a / i;
}
}
int x = 0;
System.out.print("Rozkład na czynniki pierwsze liczby " + a1 + "=");
while (x < liczbyPierwszeA.size()) {
System.out.print(liczbyPierwszeA.get(x) + "*");
x++;
}
for (int i = 2; i <= b; i++) {
while (b % i == 0) {
// System.out.print(i + "*");
liczbyPierwszeB.add(iloscB, i);
iloscB++;
b = b / i;
}
}
System.out.println("");
int y = 0;
System.out.print("Rozkład na czynniki pierwsze liczby " + b1 + "=");
while (y < liczbyPierwszeB.size()) {
System.out.print(liczbyPierwszeB.get(y) + "*");
y++;
}
int licznik = 0;
ArrayList Wspolne = new ArrayList();
int WspolneLicznik = 0;
while (liczbyPierwszeA.get(licznik) == liczbyPierwszeB.get(licznik)) {
Wspolne.add(WspolneLicznik, liczbyPierwszeA.get(licznik));
licznik++;
WspolneLicznik++;
}
System.out.println("");
int z = 0;
while (z < Wspolne.size()) {
System.out.print(Wspolne.get(z) + "*");
z++;
}
}
}
很高兴看到一大段代码,但想发布我到目前为止的所有内容。素数分解工作正常,现在我想比较两个数组列表并找到共同的元素。但例如 36 和 48 是
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*
如您所见,它不能正常工作,结果应该是 2*2*3,而不是 2*2。如何在整个arraylist中找到常见的数字系列,而不是像我的代码现在可以在arraylist的开头找到?
【问题讨论】:
标签: java prime-factoring greatest-common-divisor