Formel für Benchmark...

Janchu88

Kapitän zur See , HWLUXX Vize-Superstar
Thread Starter
Mitglied seit
29.11.2005
Beiträge
5.271
Ort
irgendwo im Nirvana...
Hi Leutz,

Ich bastel gerade spasseshalber nen kleinen Benchmark zusammen... bis jetzt zählt er zu ner bestimmten Zahl hoch und gibt aus wie lange er dafür gebrqaucht hat.... nicht sonderlich kreativ, i know... genau da sollt ihr mir eben helfen

Was soll der Benchmark berechnen und habt ihr dazu evtl auch ne passende Formel?

mfG Janchu88
 
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
du koenntest zb PI berechnen :bigok: oder einfach Primzahlen ;)
 
wie prüft man den mathematisch ob eine Primzahl eine Primzahl ist?

Das wäre schon eine Gute Grundlage, eigentlich muss man doch nur gucken ob sie durch 2 oder 3 teilbar ist? wenn das nicht der fall ist, müsste es ne primzahl sein,schliesslich sind alle Zahlen irgendwie Vielfache von 2 oder 3 bis auf primzahlen
 
ich versuch grad auch nen benchmark, ich lass meinen ne 15stellige primzahl in ihre primfaktoren zerlegen, was bei meinem 3200+ doch einige zeit dauert, also ziemlich rechenintensiv ist.

wenn du willst den c++ code hätt ich dir zumindest für den primfaktor
 
@Dapaul .... das ist jede zahl... :d

@Setenair... Primfaktorzerlegung läuft doch auf zerlegung in in zahlen mit der basis 2 oder 3 hinaus, oder sehe ich das falsch?
 
wenn du proggst, gibts doch immer nen befehl, dass du teilst, so dass der Rest angezeigt wird !
zB 12 / 5 = 2 Rest 2, weil 2*5=10 + 2 = 12
div oder mod oder so is das glaub ich bei Delphi !

kannst ja dann einfach den rest beim teilen einer variable zuweisen und wenn dann rest = 0 dann isses keine primzahl ! du musst auch immer nur bis zu dem wert = (wurzel aus der zahl + 1) rechnen ! das spart arbeit !

mfg
aTifreak
 
jup also hab mal als normales programm gemacht ohne zeitausgabe, man gibt ne zahl ein und das programm zerlegt in die primfaktoren also zb: 64 = 2*2*2*2*2*2 und wenns ne hohe zahl is die keine primzahl is gehts ziemlich schnell, aber wenns ne primzahl is dauerts halt länger und dadurch "schaff" ich mir sozusagen ne lange rechenzeit. als zahl hab ich 123456789 (sind doch keine 15zahlen hatte es nemme so gut in errinerung :P ) war auch nur austesten das ich nicht immer ewig warten muss.

Code:
String Primfaktor(int p)
{
  static String txt;
  txt = "";
  int t = 2;
  while (p>t)
    {
      if (p%t==0)
       {
         txt = txt +IntToStr(t) + " * " ;
         p = p/t;
       }
      else
       {
         t++;
       }
    }
  if (p<=1)
    {
     txt = "ist zu klein";
    }
  else
  {
  txt = txt +IntToStr(t);
  }
  return txt ;
}

sind noch überbleibsel drin weils am anfang n programm war wo man selber ne primzahl eingeben kann
 
@Atifreak

Ja, das war auch mein Gedanke dabei, das Teil heisst Modulo Operator bei Java. Wird geschrieben als "%"

@Se7enair

verstehe nur teile des quellcodes - hab noch nie mit c++ gearbeitet obwohl es für nen bench wohl eigentlich wesentlich geeigneter wäre... aber nen Versuch mit Java ists alle mal wert

@dapaul... ja, aber wie genau soll ich dann mathematisch umsetzen? :/
 
Zuletzt bearbeitet:
@Setenair... Primfaktorzerlegung läuft doch auf zerlegung in in zahlen mit der basis 2 oder 3 hinaus, oder sehe ich das falsch?

Mathe-Modus an: Irgendwie verstehe ich dich nicht... nein, alle Primzahlen können in der Primfaktorzerlegung auftreten. Bei 91 kommt auch keine 2 oder 3 vor. Sondern 7*13. Und 7 und 13 sind Primzahlen, also nciht weiterzerlegbar...
Daher ist es glaube ich deutlich schwieriger, Primzahlen als solche zu indentifizieren.
 
kurze erklärung:

programm bekommt eine zahl zb 64 und hat einen teiler von2, programm guckt ob 64durch2 teilbar ist wenn ja wird 64 durch 2 geteilt und dann mit der neuen zahl weitegemacht, falls die zahl mal nicht teilbar sein sollte wird der teiler um 1 erhöht sprich von 2 auf 3 auf 4 usw.... und da 123456789 eine primzahl ist und nur durch sich selber und 1 teilbar ist, wird die funktion sooft wiederhiohlt bis der teiler auf 123456789 gesetzt wurde. also braucht die funktion 123456788 durchläufe bis ein ergebniss kommt
 
kurze erklärung:

programm bekommt eine zahl zb 64 und hat einen teiler von2, programm guckt ob 64durch2 teilbar ist wenn ja wird 64 durch 2 geteilt und dann mit der neuen zahl weitegemacht, falls die zahl mal nicht teilbar sein sollte wird der teiler um 1 erhöht sprich von 2 auf 3 auf 4 usw.... und da 123456789 eine primzahl ist und nur durch sich selber und 1 teilbar ist, wird die funktion sooft wiederhiohlt bis der teiler auf 123456789 gesetzt wurde. also braucht die funktion 123456788 durchläufe bis ein ergebniss kommt
Ich verstehe! sehr gut! werde ich evtl auch einbauen, kann ja paar verschiedene modi einbauen.

Aktuell versuche ich mich an der Intervallschachtelung zur Bestimmung von irrationalen zahlen, nach kurzem recré krieg ich es auf dem papier wieder hin... ma sehen ob ich es auch in java umsetzen kann. Die ganze Prozedur nennt man auch Iteration wenn ich mich recht erinner

Thx so far!
 
Zuletzt bearbeitet:
Ich verstehe! sehr gut! werde ich evtl auch einbauen, kann ja paar verschiedene modi einbauen.

Aktuell versuche ich mich an der Intervallschachtelung zur Bestimmung von irrationalen zahlen, nach kurzem recré krieg ich es auf dem papier wieder hin... ma sehen ob ich es auch in java umsetzen kann. Die ganze Prozedur nennt man auch Iteration wenn ich mich recht erinner

Thx so far!

Ne Intervallschachtelung kann man iterativ oder rekursiv programmieren. Je nach welcher Aufgabe kann beides schneller sein.
Iterativ heißt, dass das ganz in einer Funktion geschieht, und zwar in einer Schleife, in der die Grenzen in deinem Fall immer wieder angepasst werden.
Rekursiv programmiert würde das Programm sich immer wieder mit den angepassten Grenzen selber aufrufen.

Man kann aber jeweils das eine immer in das andre umbauen, da gibts Algorithmen für...
 
also habs fertig gemacht :P

hab nen Athlon Xp 3200+ und für die funktion brauch ich ca. 30sek... sagt mir jedenfalls mein programm und meine stoppuhr :P
 
so, hab auch meine Intervallschachtelung fertig! :d

Werde nun noch bischen am Layout arbeiten und es dann präsentieren... danach versuch ich noch das mit den primzahlen als seperaten benchmark einzubauen
 
kannst du dann mal schreiben wie und was du genau gemacht hast? also nich den code sondern sowas wie die erklärung von mir. dann versuch ich des auchmal in c umzusetzten das man zwischen verschiedenen benches wählen kann
 
Natürlich...

Also ...

Mir geht es um die Bestimmung der Nachkommastellen der Zahl Wurzel 2 (etwa 1,414 bla)

Dazu muss ich als erstes 2 Dinge festlegen, eine obere und eine untere Grenze. Ich habe 1 und 2 Gewählt.

1² = 1
2² = 4
Wurzel(2) ² = 2

also ist klar das sich Wurzel(2) zwischen 1 und 2 befinden muss, wir haben also eine untere und obere Grenze, nämlich 1 und 2.

Den Raum zwischen der oberen und der unteren Grenze nennt man Intervall.

Jetzt gilt es dieses Intervall immer weiter zu verkleinern um die Zahl Wurzel 2 immer genauer bestimmen zu können. Dazu macht man folgendes:

1. Wir wissen 1 < Wurzel(2) < 2

Wir bilden den Mittelwert aus der oberen und der unteren Grenze:

1+2 = 1,5.

Nun muss geprüft werden, ist 1,5 kleiner oder grösser Wurzel 2

also

1,5² = 2,25

1,5 ist also grösser als Wurzel(2)

Damit haben wir eine neue obere Grenze, nämlich 1,5

Dann geht das Spiel wieder von vorne los.

1 < Wurzel (2) < 1,5

Wir bilden die Mitte

1,25 - Ist 1,25 kleiner oder grösser Wurzel 2?

1,25² = 1,5625
Wurzel(2)² = 2

Also ist 1,25 kleiner Wurzel 2

wir haben eine neue untere Grenze.

Und wieder geht es von vorne los... diesmal mit 1,25 < Wurzel (2) < 1,5

Prinzip ist recht einfach. Quellcode dürfte für dich als C++´ler auch sehr leich verständlich sein:

Code:
          halb = (min + max) / 2.0;
          halbpow = Math.pow(halb,2); //Quadrierung des Mittelwertes
      
          if(halbpow > 2.0)
          {
          max = halb;
          }
      
          else
          {
          min = halb;
          }

Der Teil sitzt halt in einer Schleife, also geht man iterativ vor

Das Problem das sich mir gerade stellt ist wie kann ich auf eine bestimmte nachkommastelle hin genau brechnen, hab zwar ne Methode mit String konvertierungen, aber der geht nach ner hand voll nachkommastellen die puste aus... Ansonsten muss ich einfach nen festen Wert an Wiederholungen der Schleife setzen.
 
Zuletzt bearbeitet:
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh