Ich als Informatikstudent weiß da leider auch keine so genaue Antwort, aber ich kann es mir so vorstellen:
Nehmen wir mal die 100 Beispiel:
Die Primfaktorzerlegung ist somit 5*5*2*2.
Somit ergibt sich folgendes int Array:
[5, 5, 2, 2].
Wir durchlaufen dieses Array und fangen beim Index 0 an.
int zahl1 = 1
int zahl2 = 1
int zahl1faktoren[] //eigentlich eine Liste
int zahl2faktoren[]
int Faktor
for (int i=0; i < array.size(); i++)
if zahl1faktoren == NULL
zahl1faktoren.add(array[i])
zahl1 = zahl1 * array[i]
continue
if zahl1faktoren.size() > zahl2faktoren.size() && not zahl2faktoren.contains(array[i]) && not zahl1faktoren.contains(array[i])
zahl2aktoren.add(array[i])
zahl2 = zahl2 * array[i]
continue //zurück zum Anfang der for Schleife
if zahl1faktoren.contains(array[i])
zahl1 = zahl1 * array[i]
if zahl2faktoren.contains(array[i])
zahl2 = zahl2 * array[i]
Ich hoffe mein Pseudocode ist nicht zu unordentlich :D es würde bei zahl1 25 und bei zahl2 4 raus kommen. Ist es das was du meinst?
Punkte: 50
Oh ja habe noch den Fall vergessen, dass es einen Faktor gibt, der nicht in Liste1 ist, aber rein soll und wann es passieren soll. Da würde ich sagen, dass es unter der Bedingung geschehen soll, dass der Faktor nicht in Liste1 ist und Liste1 die gleiche Länge wie Liste 2 hat.
Außerdem müsste man glaube ich das Array erstmal absteigend sortieren, aber ich kann mich auch irren.
─ dd28924 28.03.2019 um 23:53
Sehr interessante Frage, ich kenne keinen... Kann mir aber gut vorstellen, dass irgendwer sich schon damit beschäftigt hat ':D
Ich werde jetzt bestimmt Mal druber nachdenken! :)
─ jojoliese 28.03.2019 um 22:24