Kgv aller Paare aus einem Array mit n integer berechnen

Diskutiere Kgv aller Paare aus einem Array mit n integer berechnen im Allgemeine Java-Themen Bereich.
D

Default

Hallo zusammen!

Ich bin gerade dabei, die kgv's aller möglichen Paare aus einem Array zu berrechnen. Die Methoden computeLCM sowie gcd funktionieren bereits.

Mein Code bis jetzt:

Java:
int[]lcmeach = new int[n];
        for (int i = 0; i < a.length; i++){
          for (int j = 0; j < a.length-1; j++){
            int gcd = gcd(a[j], a[j+1]); // im Array a sind alle n Zahlen abgespeichert
            lcmeach[j] = computeLCM(a[j], a[j+1], gcd);
          }
         }
Mir rechnet es nun jedoch nur die Paare, welche nebeneinander sind aus sprich hat der Array a[] als Beispiel 3 Elemente nur die beiden kgv (a[0], a[1]), kgv (a[1], a[2]) und eine 0. Wie kann ich den Code abändern sodass ich auch den kgv (a[0], a[2]) erhalte?
Also ich weiss auch warum es mir kgv (a[0], a[2]) nicht berechnet, da ich ja mit computeLCM(a[j], a[j+1], gcd); nur die beiden Zahlen nebeneinander berechne aber ich weiss nicht wie ich das ganze abändere...

Vielen Dank für eure Hilfe!!!
 
MoxxiManagarm

MoxxiManagarm

Dein Problem entsteht in deinen Schleifenköpfen. Diese sollen so aussehen:
Java:
for (int i = 0; i < a.length - 1; i++) {
  for (int j = i + 1; j < a.length; j++) {
Dann hast du bei 5 Elementen die Index Paarungen
Code:
01 02 03 04
12 13 14
23 34
34
 
D

Default

Dein Problem entsteht in deinen Schleifenköpfen. Diese sollen so aussehen:
Java:
for (int i = 0; i < a.length - 1; i++) {
  for (int j = i + 1; j < a.length; j++) {
Dann hast du bei 5 Elementen die Index Paarungen
Code:
01 02 03 04
12 13 14
23 34
34
Ändere ich das ganze so ab, erhalte ich bei Linie int gcd = gcd(a[j], a[j+1]); ArrayIndexOutOfBoundException. Wie behebe ich das Ganze? :s

Code:

Code:
        int[]lcmeach = new int[a.length];
        for (int i = 0; i < a.length - 1; i++){
          for (int j = i + 1; j < a.length; j++){
            int gcd = gcd(a[j], a[j+1]);
            lcmeach[j] = computeLCM(a[j], a[j+1], gcd);
          }
         }
 
MoxxiManagarm

MoxxiManagarm

Ändere ich das ganze so ab, erhalte ich bei Linie int gcd = gcd(a[j], a[j+1]); ArrayIndexOutOfBoundException. Wie behebe ich das Ganze? :s
Ich habe nicht gesagt dass der Schleifeninhalt unverändert bleiben soll! Überleg doch mal, ich habe dir gezeigt wie die Indexpaarungen aussehen bei den geänderten Schleifenköpfen. Das Einzige, was du tun musst, ist die Werte von diesen beiden Indexen (i und j) zu vergleichen. lcmeach ist natürlich größer als a.length (Stichwort: Kombination ohne Wiederholung)
 
Zuletzt bearbeitet:
MoxxiManagarm

MoxxiManagarm

Ich will es dir mit der Größe von lcmeach etwas vereinfachen.
Die Formel für Kombination ohne Wiederholung ist
Code:
n!
--------
(n-k)!k
Du willst immer 2 Elemente miteinander vergleichen, also ist k = 2

Code:
n!
-------
(n-2)!2
Für n > 2 Kannst du auch schreiben
Code:
n (n-1) (n-2)!
--------------
2 (n-2)!
(n-2)! wird weggekürzt, übrig bleibt
Code:
n(n-1)/2
Mit n = 5 wären das
Code:
5 * (5 - 1) / 2 = 10
Diese 10 findest du auch in der Anzahl der Indexpaarungen vom obigen Beispiel Post, welcher auf n = 5 bezogen war.
 
Thema: 

Kgv aller Paare aus einem Array mit n integer berechnen

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben