tutorials.de Buch-Aktion 05/2012
Like Tree2Danke
  • 1 Beitrag von dki
  • 1 Beitrag von sheel
ERLEDIGT
JA
ANTWORTEN
9
ZUGRIFFE
372
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Jens K Jens K ist offline Mitglied
    Registriert seit
    Jun 2008
    Beiträge
    24
    hallo zusammen,

    ich habe eine kleine Frage.
    Ich habe einen kleinen Code:
    Code :
    1
    2
    3
    4
    5
    
    for (int i = 2; i <= n; i++){
        for (int j = i; j <= n; j = j*i){
            print "Answeisung";
        }
    }

    Das ist jetzt keine bestimmte Programmiersprache oder so. Ich möchte jetzt gerne analyisieren, wie oft
    Code :
    1
    
    print "Anweisung"
    aufgerufen wird. Wie geht das? das j=j*i überfordert mich etwas

    Vielen Dank im voraus

    Gruß
    Geändert von Jens K (16.04.10 um 19:48 Uhr) Grund: Code ausgebessert
     

  2. #2
    Larrywayn Larrywayn ist offline Mitglied Silber
    Registriert seit
    May 2009
    Ort
    Berlin
    Beiträge
    60
    Gar kein mal oder endlos, weil 1*1 = 1 ist und 1 ist immer gleich 1 oder eben größer, falls n kleiner als 1 ist, und dann bricht es schon vorher ab
    Edit: Wie das geht? Einfach mal mit n = 2 z.b. Anfangen und gucken was passiert
    schleife 1:
    i = 1.
    i < 2
    schleife 2:
    j = i =1.
    i < 2 (da sollte vielleicht j hin?)
    --ausgabe--
    j = 1*1 = 1.
    j = i = 1.
    i < 2
    --ausgabe--
    .... usw.
    Geändert von Larrywayn (16.04.10 um 18:11 Uhr)
     
    http://larrywayn.pytalhost.eu xD
    Friss zeurst, sonst wirst du gefressen.

  3. #3
    Jens K Jens K ist offline Mitglied
    Registriert seit
    Jun 2008
    Beiträge
    24
    ooh ja genau da hast du recht, da sollte ein j hin und es muss heißen i=2, habe mich verschrieben

    also
    Code :
    1
    2
    3
    4
    5
    
    for (int i = 2; i <= n; i++){
        for (int j = i; j <= n; j = j*i){
            print "Answeisung";
        }
    }
     

  4. #4
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.501
    Mathematische Formel fällt mir auch keine sinnvolle

    Höchstens als Ersatz für die innere Schleife
    (int)(1/(nlog(i)))
    also den ganzzahligen Teil des Kehrwerts vom n-ten Logarithmus von i

    Die äussere Schleife zum aufsummieren kommt dann aber noch dazu.

    Für sehr größe n ist die Log-Variante vielleicht schneller, als die Doppelschleife
     

  5. #5
    Jens K Jens K ist offline Mitglied
    Registriert seit
    Jun 2008
    Beiträge
    24
    ok. sehr interessant, aber bei mir bleiben noch ein paar Fragen offen?

    Wie kommst du auf dieses Ergebnis? und welche Basis hat der Logarithmus?

    meintest du die Formel so, wie sie im Anhang steht?
    Angehängte Grafiken Angehängte Grafiken  
     

  6. #6
    dki dki ist offline Mitglied
    Registriert seit
    Sep 2008
    Beiträge
    21
    Hi,
    ich komme auf folgendes:

    Die Summe von i=2 nach n mit log(n) zur Basis i und dies noch abgerundet.

    Als Formel nochmal im Anhang.

    Für jedes i wird "print "Answeisung";" ausgeführt, solange

    i^x <= n

    gilt. x ist dabei immer eine ganze Zahl.
    Angehängte Grafiken Angehängte Grafiken  
    Jens K bedankt sich. 

  7. #7
    Jens K Jens K ist offline Mitglied
    Registriert seit
    Jun 2008
    Beiträge
    24
    hi,

    viele dank für deine Antwort. Sie klingt sehr logisch und man kann sie auch nachvollziehen!! Jetzt muss ich nur noch versuchen die Formel zu verkürzen. Möchte nämlich eine Abschätzung machen, dass dieser Ausdruck kleiner als <= c*n ist. c,n sind natürliche Zahlen

    gruß
     

  8. #8
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.501
    Nein, ich hab nicht n mal, sondern Basis n gemeint.
    Aber so wie dki geschrieben hat, kann man sich den Kehrwert auch gleich sparen, ansonsten ist es gleich.
    Jens K bedankt sich. 

  9. #9
    dki dki ist offline Mitglied
    Registriert seit
    Sep 2008
    Beiträge
    21
    Naja, wenn du die asymptotische obere Schranke bestimmen willst, dann würde ich es auf O(n) abschätzen.
     

  10. #10
    Jens K Jens K ist offline Mitglied
    Registriert seit
    Jun 2008
    Beiträge
    24
    ja wäre am sinvollsten
     

Ähnliche Themen

  1. Vereinfachen eines Codes
    Von silv20 im Forum Javascript & Ajax
    Antworten: 2
    Letzter Beitrag: 24.08.10, 10:07
  2. #Analyse eines Datenblocks(Text) in Excel#
    Von webcamping im Forum Office-Anwendungen
    Antworten: 5
    Letzter Beitrag: 09.01.09, 15:33
  3. Integration eines PHP Codes in $row
    Von GoldenEye im Forum PHP
    Antworten: 7
    Letzter Beitrag: 16.04.08, 18:00
  4. Einlesen und Analyse eines Logfiles
    Von hankenberge im Forum Java
    Antworten: 1
    Letzter Beitrag: 22.12.04, 15:20
  5. Frauen: Analyse aus der Sicht eines Chemikers
    Von Thimo Grauerholz im Forum Fun-Forum
    Antworten: 8
    Letzter Beitrag: 21.06.01, 09:44