Ich habe Heute etwas auf einer webseite gelesen ich Zitiere :
Zitat
Meine bisherigen Versuche, eine generative Formel für eine Primzahl zu finden und die 250.000 Dollar beim EFF-Wettbewerb zu gewinnen, waren noch nicht erfolgreich.
...
Meines wissens ist doch eine Genetive Formel eine formel bei der man errechnen kann ob die Zahl X eine Primzahl ist.
Nunja ich habe es geschafft ^^ Wo sind meine 250.000 $ ?
Hier meine Lösung :
Wie hättet ihre es gelöst ?
Ist meine Lösung zu rechen intensiv ? Oder Gar total überladen ?
Hier hatten wir das Thema schon mal. Kannst dir ja mal meinen Code und den vom Ork dort anschauen. Dein Code ist wirklich etwas uneffizient. Wenn man testet, ob A durch B gerade teilbar ist und B² größer oder gleich A ist, dann ist A nicht gerade durch B teilbar. Hm, naja ist jetzt sicher etwas schwer zu verstehen. Ich poste mal meine Alternative zu deinem Programm hier ein:
Ist sogar etwas kürzer. Wenn du etwas daran nicht verstehst einfach nachfragen.
Erst mal stammt das Zitat wohl von http://www.frank-buss.de/prime/, seh ich das richtig? Ist etwas sehr aus dem Kontext gerissen.
Dann ein bisschen (hoffentlich konstruktive) Kritik:
1. Ich weiß zwar zugegebenermaßen selber nicht, was eine "generative Formel" ist, aber das ist sicher keine. Das ist ein Algorithmus und so was findest du in jedem guten C++ Lehrbuch als Beispielcode. Übrigens ist auf der oben genannten Seite auch ein Link zu einem entsprechenden Algorithmus.
2. Schlechter Einrückstil. Rück nach MöglichkeitGrunsätzlich immer 2 bzw. 4 Leerzeichen weit ein, je nachdem, was dir besser gefällt. Aber bleib bei einem von beidem.
3. Es erscheint keine Ausgabe, wenn die Zahl keine Primzahl ist.
4. Zumindest bei mir ist bei einem Probelauf nach der Eingabe gar keine Ausgabe mehr sichtbar, weil das Fenster sofort geschlossen wird. Schreib ein getchar(); ans Ende. (Wobei das von meinem gcc auch nicht richtig kompiliert wird.)
5. Rechtschreib-/Tipfehler in sehr kurzen Ausgaben. Wenn sichs nur um Code zum Lernen handelt, mag das egal sein, aber wenn du das anderen weitergibst, solltest du wenigstens das Gröbste korrigieren.
6. Nach zwei "}" hast du ein unnötiges Semikolon.
7. Es ist eine SEHR merkwüdige Methode, seine Variablen zu deklarieren, indem man sie als Parameter der Main Funktion hinzufügt.
8. Die beiden Ifs am Schluss lassen sich mit && verbinden.
9. Die Kommentarzeile zwischendrin ist mir nicht ganz klar. Scheint eine Debuginfo zu sein, die ich aber auch nicht wirklich entziffern kann.
Ich hab mir mal die Mühe gemacht und eben diese Fehler ausgebessert:
Trotzdem halte ich den Algorithmus immer noch für alles andere als gut verständlich. Hier mal eine Variante in Form einer Funktion:
Das ganze ist natürlich immer noch nicht komplett optimiert, aber es funktioniert genau so und ist DEUTLICH kürzer und mit Sicherheit auch schneller.
2. Schlechter Einrückstil. Rück nach MöglichkeitGrunsätzlich immer 2 bzw. 4 Leerzeichen weit ein, je nachdem, was dir besser gefällt. Aber bleib bei einem von beidem.
...
oO? Also bisher hat sich nochniemand über meine Einrückung beschwert.
Zitat
3. Es erscheint keine Ausgabe, wenn die Zahl keine Primzahl ist.
...
Joa habe ich woll vergessen -.-'
bzw.Fand ich nett für wichtig
Zitat
4. Zumindest bei mir ist bei einem Probelauf nach der Eingabe gar keine Ausgabe mehr sichtbar, weil das Fenster sofort geschlossen wird. Schreib ein getchar(); ans Ende. (Wobei das von meinem gcc auch nicht richtig kompiliert wird.)
...
Ja ^^ ich teste meine Programme immer über CMD darum habe ich das woll vergessen
btw, wenn du dir den Link zu besagtem Contest mal durchgelesen hättest, wüsstest du, dass du die 250.000$ kriegst, wenn du als erster eine Primzahl mit mindestens einer Milliarde Stellen herausfindest. Viel Spaß beim rechnen lassen.