Ich muss Primzahlen mit for-Schleife oder while-Schleife
findenIch habe das geschrieben, aber das ist falsch
%Vor%Gibt es eine Möglichkeit, eine Zahl durch ein Array zu teilen, um die verbleibenden zu finden?
Hier ist ein One-Liner, den ich vor einiger Zeit gefunden habe, um nach Primzahlen zu suchen. Es verwendet Tally-Markierungen (unäre Mathematik), um zu bestimmen:
%Vor%Überprüfen Sie alle Zahlen nacheinander auf Primzahlen:
%Vor%Um nur einen Zahlenbereich für Primzahlen zu prüfen, wie im Beispiel:
%Vor%Dies ist, glaube ich, eine recht effiziente Routine, die alle Primzahlen bis 1000 auflistet.
Es testet jede Zahl ($ x), um zu sehen, ob es irgendwelche Faktoren (außer sich selbst und 1, natürlich) hat.
Mathematisch ist es nicht notwendig, alle niedrigeren Zahlen als mögliche Faktoren zu testen, sondern nur Primzahlen bis zur Quadratwurzel von $ x. Dies wird durch das Speichern von Primzahlen ermöglicht, so wie sie in einem Array gefunden werden (was meiner Meinung nach die Strategie ist, auf die sich das OP bezieht).
Sobald der erste Primfaktor gefunden ist, wissen wir, dass $ x nicht prim ist, und daher ist kein weiterer Test dieses Wertes von $ x nötig und wir können aus der foreach-Schleife ausbrechen.
%Vor%Ich weiß, dass das etwas spät kommt, aber hoffe, es hilft jemandem.
%Vor%// Beispiel primzahl_finder (200);
Sieve_of_Eratosthenes ist ein einfacher und schneller Algorithmus, um Primzahlen zu finden.
%Vor%Finden Sie Primzahlen zwischen 1 und 10000 mit einem Abschluss in array_filter ():
%Vor%Bearbeiten: 1 ist keine Primzahl
Der beste Weg, um zu überprüfen, ob eine Zahl eine Primzahl ist, ist zu sehen, ob sie durch irgendeine Primzahl davor teilbar ist. Pi (x) ist diejenige, die ich überall sehe ... Sie können ein bisschen mehr Informationen über Prime Counting auf wikipedia .
Der effizienteste Weg, den ich mir im Moment vorstellen kann, ist folgender:
%Vor%Was nicht wirklich effizient ist, na ja, nicht, wenn es darum geht, die Liste der Primzahlen zu erstellen ... Ich habe an einem besseren Weg gearbeitet, die Liste zu erstellen. hier , obwohl es genauso einfach und viel effizienter wäre, eine Liste online zu finden und diese zu verwenden.
Die Verwendung der oben genannten wäre in etwa wie folgt:
%Vor%Ich weiß das zu spät, aber ich fand, dass diese Lösung viel besser und einfacher ist
%Vor%Ich weiß, dass es ein bisschen spät wird, aber hier ist ein einfaches Programm, um Ihnen zu helfen, genau das zu tun, wonach Sie fragen ...
%Vor%Enforced Version von @Farkie Antwort speziell für die Überprüfung der Primzahlen in Schleifen.
%Vor%Benchmark mit phpfiddle.org. V1 - Farkie Antwort, V2 - verbesserte Version
%Vor%HINWEIS!
isPrime_v2
function ist NUR im Falle eines Schleifens von 3 anwendbar. Andernfalls wird das gespeicherte $ wonedPrimes-Array nicht ausreichend gespeichert.