Primefactors

NicoHatProbleme2

Bekanntes Mitglied
Ich würde gerne alle Primefactors finden, also z.B. bei 12: 2,3,4,6,12. im Moment habe ich nur 2,2,3. Wie kann ich das ändern?
Java:
        int[] ints = new int[number];
        int x = 0;
        for(int i = 2; i < number; i++) {
            while(number % i == 0) {
                ints[x] = i;
                number /= i;
                System.out.println(i);
                x++;
            }
        }
        if(number >= 2) {
            ints[x] = number;
            System.out.println(number);
            x++;
        }
 

KonradN

Super-Moderator
Mitarbeiter
Wenn Du alle Teiler einer Zahl haben willst: Was musst Du dann machen? Und was machst Du in Deinem Code mehr?

Spiel es einfach einmal durch mit Stift und Papier.
 

NicoHatProbleme2

Bekanntes Mitglied
geht nicht einfach
Java:
int[] ints = new int[number];
        int x = 0;
        for(int i = 1; i < number; i++) {
            if(number % i == 0) {
                ints[x] = i;
                System.out.println(i);
                x++;
            }
        }
?
 

httpdigest

Top Contributor
Teste es. Wenn es das richtige Ergebnis liefert, dann geht's. Ist halt nur nicht so effizient, weil du immer _jede einzelne_ Zahl bis N/number probierst.
 

KonradN

Super-Moderator
Mitarbeiter
Generell macht es Sinn, sich den "Fachbereich" im Detail zu betrachten. Das ist hier ein einfaches Mathematisches Problem.

Was bedeutet denn eine Teilbarkeit? Eine Zahl z ist durch a Teilbar, wenn es eine Zahl b gibt, so dass gilt a * b = z.
Daher hast Du eigentlich immer 2 Teiler - denn b kannst Du auch direkt ermitteln.
Und bis wohin muss die Schleife gehen?

==> Immer die eigentliche Problematik genau erfassen und durchdenken. Dann kommt in der Regel auch ein relativ gutes Ergebnis zustande.
 

Neue Themen


Oben