tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
3
ZUGRIFFE
1160
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Registriert seit
    Aug 2004
    Beiträge
    213
    Hallo allerseits.
    Ich hoffe meine Frage ist hier richtig:

    Der Größte Gemeinsame Teiler (GGT) zweier Zahlen ist ja bekanntlich die größte Zahl, durch die sich beide ohne Rest Teilen lassen.
    Um den GGT Teiler zweier Zahlen bestimmen zu lassen, hab ich folgende Funktion geschrieben (ich wähl jetzt einfach C++, weil das wohl für die meisten lesbar sein wird):

    PHP-Code:
    int ggt(int Zahl1,int Zahl2)
    {
    int x=1;
    for (
    int i 1<= ((Zahl1 Zahl2) ? Zahl1 Zahl2); i++)
    {
    if ((
    Zahl1 == 0) && (Zahl2 == 0))
    x=i;
    }
    return 
    x;

    Es wird in der Schleife jeder ganzzahlige Wert größer Null daraif überprüft, ob er durch die beiden Zahlen ohne Rest teilbar ist.

    Meine Frage ist, ob es nicht auch effizientere Wege gibt (ähnlich wie bei den isPrimzahl Funktionen, die Seitenlange Code haben), denn die Funktion hier dauert bei größeren Zahl en schon etwas.

    Danke
     
    "Nun, diese taktischen Atomwaffen, das ist ja eine bloße Fortsetzung der Artillerie."
    "Nehmen Sie die Menschen, wie sie sind, andere gibt's nicht."
    "Lieber das halbe Deutschland ganz als das ganze Deutschland halb."
    "Ist es nicht schrecklich, dass der menschlichen Klugheit so enge Grenzen gesetzt sind und der menschlichen Dummheit überhaupt keine?"
    - Konrad Adenauer

    sprachtherapie göttingen

  2. #2
    Registriert seit
    Mar 2004
    Ort
    Basisrealität
    Beiträge
    12.118
    Blog-Einträge
    7
    Hi,

    normalerweise macht man das rekursiv mit der Modulo-Funktion:
    PHP-Code:
    public int ggT(int aint b) {
       if (
    == || == ) return a;
       return 
    ggT(bb);

    Gruß
    .
     

  3. #3
    Registriert seit
    Jun 2002
    Ort
    Saarbrücken (Saarland)
    Beiträge
    9.886
    Blog-Einträge
    29
    Hallo!

    Normalerwerise macht man das so:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    
    /*
     * Created on 05.02.2005@14:00:13
     *
     * TODO Licence info
     */
    package de.tutorials;
     
    /**
     * @author Administrator
     *
     * TODO Explain me
     */
    public class GCDTest {
     
        public static void main(String[] args) {
            System.out.println(gcd(21, 21));
        }
     
        /**
         * @param i
         * @param j
         */
        private static int gcd(int i, int j) {
            if (j == 0)
                return i;
            else
                return gcd(j, i % j);
        }
    }

    Mit Datics "Optimierung" if (a == b || b == 0 ) spart man sich im Fall a == b einen rekusiven Aufruf.

    Gruß Tom
     
    Java rocks!
    How to become a good Java Programmer?
    Does IT in Java and .Net
    The only valid measurement of code quality: WTFs / minute
    Blog
    Xing
    Twitter

  4. #4
    Registriert seit
    Aug 2004
    Beiträge
    213
    Okay, vielen Dank.
     
    "Nun, diese taktischen Atomwaffen, das ist ja eine bloße Fortsetzung der Artillerie."
    "Nehmen Sie die Menschen, wie sie sind, andere gibt's nicht."
    "Lieber das halbe Deutschland ganz als das ganze Deutschland halb."
    "Ist es nicht schrecklich, dass der menschlichen Klugheit so enge Grenzen gesetzt sind und der menschlichen Dummheit überhaupt keine?"
    - Konrad Adenauer

    sprachtherapie göttingen

Ähnliche Themen

  1. Effizienz Frage
    Von Der Wolf im Forum C/C++
    Antworten: 5
    Letzter Beitrag: 29.08.10, 18:25
  2. [MySQL] Geschwindigkeit Lesbarkeit Effizienz
    Von chmee im Forum Relationale Datenbanksysteme
    Antworten: 3
    Letzter Beitrag: 21.09.09, 21:36
  3. Mal wieder Frage zur verbesserung der Effizienz
    Von NoGFX im Forum Flash Plattform
    Antworten: 2
    Letzter Beitrag: 08.05.07, 16:12
  4. Frage zur Effizienz
    Von kevkev im Forum Coders Talk
    Antworten: 5
    Letzter Beitrag: 24.04.06, 23:09
  5. Formularverarbeitung Effizienz steigern
    Von sirvival im Forum PHP
    Antworten: 2
    Letzter Beitrag: 28.02.06, 10:56