So finden Sie die Primzahl zur Laufzeit von O (1)

Abdurakhmon

Ich habe diese Frage in einem Interview bekommen

Bitte geben Sie eine Lösung an, um zu überprüfen, ob eine Zahl eine Primzahl ist, indem Sie eine Schleife von eins - O (1) verwenden. Die Eingangsnummer kann nur zwischen 1 und 10.000 liegen.

Ich sagte, dass es unmöglich ist, wenn Sie nicht alle Primzahlen bis zu 10.000 gespeichert haben. Jetzt bin ich mir nicht ganz sicher, ob meine Antwort richtig war. Ich habe versucht, im Internet nach einer Antwort zu suchen, und am besten habe ich mir einen AKS-Algorithmus mit einer Laufzeit von O ((log n) ^ 6) ausgedacht.

Spektren

Dies ist mit SoE (Sieb of Eratosthenes) möglich . Das Ergebnis ist ein Array von bools, das normalerweise als Einzelbit im BYTE/WORD/DWORDArray für eine bessere Speicherdichte codiert wird . Außerdem werden normalerweise nur die ungeraden Zahlen gespeichert, da die geraden außer 2 keine Primzahlen sind. Normalerweise bedeutet wahrer Wert, dass es keine Primzahl ist ....

Der naive O(1) C ++ - Code zum Überprüfen xwürde also so aussehen:

bool SoE[10001]; // precomputed sieve array
int x = 27; // any x <0,10000>

bool x_is_prime = !SoE[x];

Wenn das SoE als 8-Bit- BYTEArray codiert ist, müssen Sie den Zugriff ein wenig optimieren:

BYTE SoE[1251]; // precomputed sieve array ceil(10001/8)
int x = 27; // any x <0,10000>

BYTE x_is_prime = SoE[x>>3]^(1<<(x&7));

von grobem Konstruieren SoE ist nicht O(1)!!! Hier ein Beispiel, das es stark nutzt, um meine Minenfunktion zu beschleunigen IsPrime:

Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.

Bei Verstößen wenden Sie sich bitte [email protected] Löschen.

bearbeiten am
0

Lass mich ein paar Worte sagen

0Kommentare
LoginNach der Teilnahme an der Überprüfung

Verwandte Artikel

So finden Sie die Primzahl

So finden Sie die größte Primzahl

So finden Sie die Laufzeit des Algorithmus in big-o

So ändern Sie die Implementierung zur Laufzeit

So finden Sie Speicher und Laufzeit, die von einem NuSMV-Modell verwendet werden

So entfernen Sie die letzten Segmente von Emit IL zur Laufzeit

So stellen Sie die Höhe von Ionic 4 IonContent zur Laufzeit ein

So erstellen Sie ein parametrisiertes JAR, in dem die Parameter zur Laufzeit von Benutzern übergeben werden

So finden Sie zur Laufzeit mit bekannten Eigenschaften, welcher Build von MSBuild ausgeführt wird - .NET Core oder .NET Framework

So schreiben Sie eine Funktion false_prime, die keine Argumente benötigt und die erste Primzahl p zurückgeben soll, für die q = 2^p - 1 keine Primzahl ist

Bestellen Sie die folgende große O-Notation, von der schnellsten bis zur langsamsten Laufzeit

So erhalten Sie zur Laufzeit ein sortiertes Ergebnis von DynamoDB

So ändern Sie das @Scheduled fixedDelay von Spring zur Laufzeit

So ändern Sie dieses Array von Elementen in JComboBox zur Laufzeit

So schreiben Sie zur Laufzeit von BizTalk in das SSO

So ändern Sie den Namen von .exe zur Laufzeit

So steuern Sie die Abhängigkeitsinjektion in OSGi zur Laufzeit

So bestimmen Sie dynamisch die zur Laufzeit zu verwendende Serviceklasse

So erhöhen Sie die NLog-Protokollebene zur Laufzeit

Angular So ändern Sie die Beschriftung einer Mattentabelle zur Laufzeit

So bestimmen Sie die Warteschlange des Jobs zur Laufzeit

So ändern Sie die Abhängigkeit zur Laufzeit dynamisch

So erkennen Sie zur Laufzeit, dass die App Swift verwendet

So löschen Sie die Formularsteuerung zur Laufzeit c #

So erhalten Sie die C # -Version zur Laufzeit

So erhalten Sie die übergeordnete Klasse zur Laufzeit

So überprüfen Sie die Plattform zur Laufzeit

So öffnen Sie die Konsole zur Laufzeit [C ++ / Visual Studio]

So wählen Sie zur Laufzeit die Iteratorrichtung aus

TOP Liste

  1. 1

    So verschieben Sie ein Bild in Flutter/Dart mit einem Draggable

  2. 2

    Unity Build-Fehler: Der Name 'EditorUtility' ist im aktuellen Kontext nicht vorhanden

  3. 3

    TypeAhead.js zeigt keine Ausgangsschienen an?

  4. 4

    Deklarieren einer nicht initialisierten Variablen in der Klassendefinition in Python

  5. 5

    Wie kann ich eine verschachtelte Schleife mit lapply in R ersetzen?

  6. 6

    spring-data-jpa: ORA-01795: Die maximale Anzahl von Ausdrücken in einer Liste beträgt 1000

  7. 7

    Warum funktioniert Phantomjs nicht mit dieser Site?

  8. 8

    Interpolieren Sie mit Python die 2D-Matrix entlang der Spalten

  9. 9

    numpy: Berechnen Sie die Ableitung der Softmax-Funktion

  10. 10

    Wie vermeide ich, dass die gesamte App neu geladen wird, wenn Nav.Link von React-Bootstrap verwendet wird?

  11. 11

    MongoDB eingebettetes Dokument unterscheiden und filtern

  12. 12

    Aktualisieren des Werts im Json-Objekt in Python

  13. 13

    Warum funktioniert das Umgebungslicht in diesem Beispiel nicht?

  14. 14

    Python gibt einen Fehler aus, dass eine Datei nicht vorhanden ist, wenn dies eindeutig der Fall ist

  15. 15

    Wie verwende ich Format-Table ohne Abschneiden von Werten?

  16. 16

    So berechnen Sie die Verfügbarkeit von Anwendungen (SLA)

  17. 17

    Überprüfen Sie, ob der ausgewählte Wert 'YES' ist, wenn ja, aktivieren Sie ein Steuerelement mit Javascript

  18. 18

    Python: Spalten mit demselben Namen zusammenführen, wobei der Mindestwert beibehalten wird

  19. 19

    Holen Sie sich verwandte Pillen Inhalt mit angeklickten img in Angular

  20. 20

    Eclipse Oxygen - Projekte verschwinden

  21. 21

    Wie aktualisiere ich ein Feld in einer Raumdatenbank mit einem Repository und einem Ansichtsmodell?

heißlabel

Archiv