Analyse eines Codes

Jens K

Mitglied
hallo zusammen,

ich habe eine kleine Frage.
Ich habe einen kleinen Code:
Code:
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:
print "Anweisung"
aufgerufen wird. Wie geht das? das j=j*i überfordert mich etwas

Vielen Dank im voraus

Gruß
 
Zuletzt bearbeitet:
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 :D
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.
 
Zuletzt bearbeitet:
ooh ja genau da hast du recht, da sollte ein j hin und es muss heißen i=2, habe mich verschrieben :-(

also
Code:
for (int i = 2; i <= n; i++){
    for (int j = i; j <= n; j = j*i){
        print "Answeisung";
    }
}
 
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
 
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?
 

Anhänge

  • formel.jpg
    formel.jpg
    5,2 KB · Aufrufe: 7
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.
 

Anhänge

  • @Sum_{i.is.2}^{n}{floor(@Fr{ln$(n$)}{ln$(i$)})}.png
    @Sum_{i.is.2}^{n}{floor(@Fr{ln$(n$)}{ln$(i$)})}.png
    1,6 KB · Aufrufe: 50
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ß
 
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.
 

Neue Beiträge

Zurück