Welche der beiden Methoden ist schneller?



  • Es soll das kleinste gemeinsame Vielfache gefunden werden.
    Welche Methode ist schneller, kgv1 oder kgv2?
    Und warum ist die eine schneller als die andere?

    protected static int kgv1(int zahl1, int zahl2){
            if (zahl1 <= 0 || zahl2 <= 0){
                throw new IllegalArgumentException("Beide Zahlen müssen >0 sein.");
            }
            int z1 = zahl1;
            int z2 = zahl2;
            while (z1 != z2){
                if (z1 < z2){
                    z1+=zahl1;
                } else {
                    z2+=zahl2;
                }
            }                    
            return z1;
        }
    
        protected static int kgv2(int zahl1, int zahl2){
            if (zahl1 <= 0 || zahl2 <= 0){
                throw new IllegalArgumentException("Beide Zahlen müssen >0 sein.");
            }
            if (zahl1 < zahl2){
                int temp = zahl1;
                zahl1 = zahl2;
                zahl2 = temp;
            }
            int multiplikator = 1;
            while ((zahl1 * multiplikator) % zahl2 !=0){
                multiplikator++;
            }
            return zahl1 * multiplikator;
        }
    


  • Miss doch selbst???



  • kgv schrieb:

    Es soll das kleinste gemeinsame Vielfache gefunden werden.
    Welche Methode ist schneller, kgv1 oder kgv2?

    Im Allgemeinen 2, weil viel weniger Schleifendurchläufe. Hängt aber ganz bös von den Zahlen zahl1 und zahl2 ab.
    Und beide sind zum Weinen gegenüber

    return zahl1/ggt(zahl1,zahl2)*zahl2;
    

    , weil ggt() nie abschneckt.


Log in to reply