Höchste Zahl berechnen die eine Eingabe ohne Rest teilt und eine Primzahl ist

itS

Mitglied
Hallo,

ich möchte gerne die höchste Zahl berechnen, die n ohne Rest teilt und eine Primzahl ist ... diese soll am Ende ausgegeben werden.

Leider komm ich nicht auf das richtige Ergebnis ... vielleicht kann mir jemand helfen.

Vielen Dank! 🙂

Code:
        public static int largestPrimeFactor(int n) 
    {

        int ein1 = 2;
        int erg = 1;

        while (ein1 < n) {
            if (isPrimnum(ein1) == true || n % erg == 0) {
                erg = ein1;
                ein1 = ein1 + 1;
            } 

            else {
                ein1 = ein1 + 1;
            }
        }

        return erg;    
    }
}
 
Zuletzt bearbeitet:
Das ganze kann man aber deutlich schöner machen. Zunächst kann der größte mögliche Teiler nur n/2 sein. Somit kannst du statt von 2 aufwärts zu zählen und bis zur Zahl zu gehen, einfach bei n/2 anfangen und aufhören sobald du einen ürimteiler gefunden hast. Noch dazu kannst du in zweierschritte gehen, da eine Primzahl nur ungerade sein kann. Weiterhin würde ich immer erst auf den Rest testen und dann erst ob es eine Primzahl ist, da der Rest trst um ein vieles schneller ist und wenn dervschon nicht stimmt, dann braucht man den primzahlentrst gar nicht mehr machen.

Also

Java:
For (int i=n/2;i>2;i-=2)
    If(n%i==0 && isPrim(i)
       Return i;
Return 1

Sorry für die Syntax fehler aber auf dem iPad code tippen ist echt ätzend.
 
Zuletzt bearbeitet:

Zurück
Oben