Gib alle Primzahlen zurück, die kleiner als M sind

7

Gegeben eine ganze Zahl M. gebe alle Primzahlen kleiner als M zurück.

Geben Sie einen Algorithmus so gut wie Sie können. Sie müssen die Komplexität von Zeit und Raum berücksichtigen.

Jeder kann durchkommen? Schätze!

    
user658266 18.03.2011, 02:37
quelle

9 Antworten

10

Ein paar zusätzliche Leistungshinweise:

  1. Sie müssen nur bis zur Quadratwurzel von n testen, da jede zusammengesetzte Zahl mindestens einen Primfaktor kleiner oder gleich der Quadratwurzel
  2. hat
  3. Sie können bekannte Primzahlen zwischenspeichern, während Sie sie erzeugen, und nachfolgende Zahlen gegen nur die Zahlen in dieser Liste testen (statt jeder Zahl unter sqrt(n) )
  4. Sie können natürlich gerade Zahlen überspringen
Wayne Burkett 18.03.2011, 02:58
quelle
17
Das Sieb von Eratosthenes ist ein guter Anfang.

Ссылка

    
Andrew Cooper 18.03.2011 02:41
quelle
3

Sieb von Eratosthenes ist gut.

    
user664982 18.03.2011 02:41
quelle
2

π (n) zählen die Primzahlen kleiner oder gleich n. Pafnuty Chebyshev hat gezeigt, dass wenn

lim n → ∞ π (n) / (n / ln (n))

existiert, es ist 1. Es gibt viele Werte, die ungefähr gleich π (n) sind, wie in der Tabelle gezeigt.

Es gibt die richtige Zahl der Primzahl für dieses Zahlenformat. Ich hoffe, das wird hilfreich sein.

    
Ujjwal 15.06.2015 16:06
quelle
1

Die übliche Antwort besteht darin, das Sieve von Eratosthenes , aber das ist wirklich nur eine Lösung, um die Liste aller Primzahlen kleiner als N zu finden. Wenn Sie Privalitätstests für bestimmte Nummern, es gibt bessere Möglichkeiten für große Zahlen.

    
sarnold 18.03.2011 02:43
quelle
0

Ich bin ein Anfänger Programmierer in c # (und neu in S. O.), so dass dies ein wenig wortreich sein kann. trotzdem habe ich das getestet und ich arbeite.

das ist, was ich mir ausgedacht habe:

%Vor%     
Martin Andrews 12.06.2013 19:17
quelle
0

Sie können dies tun, indem Sie eine dynamische Programmierung mit dem Bottom-Up-Prinzip, das Sieb von Eratosthenes, verwenden Im Grunde erstellen Sie einen booleschen Cache aller Zahlen bis n und Sie markieren jeweils die Vielfachen jeder Zahl als not_prime. Weitere Optimierungen können erzielt werden, indem nur bis zu sqrt (n) geprüft wird, da jede zusammengesetzte Zahl mindestens einen Teiler weniger als sqrt (n)

aufweist %Vor%     
Mad Scientist 02.04.2016 01:26
quelle
0

Das habe ich für Seif von Eratosthenes entwickelt. Es würde natürlich bessere Implementierungen geben.

// findet die Anzahl der Primzahlen kleiner als die Länge

%Vor%     
Vikash 02.07.2016 12:00
quelle
0

Das Sieve von Atkin ist auch der beste Algorithmus, der in diesem Fall implementiert wird und nur O (N) -Operationen und O (N) -Raum benötigt. Eine detaillierte Erklärung des Algorithmus und des Pseudocodes finden Sie in Ссылка .

    
Krish Bhanushali 31.01.2018 22:04
quelle

Tags und Links