Heim >Backend-Entwicklung >C++ >Wie kann man effizient bestimmen, ob eine Zahl in C eine Primzahl ist?

Wie kann man effizient bestimmen, ob eine Zahl in C eine Primzahl ist?

Linda Hamilton
Linda HamiltonOriginal
2024-12-28 15:46:16185Durchsuche

How to Efficiently Determine if a Number is Prime in C?

So bestimmen Sie Primzahlen in C

Die Frage befasst sich mit der Bestimmung, ob eine bestimmte ganze Zahl in C eine Primzahl ist. Die ursprünglich bereitgestellte C#-Lösung war :

static bool IsPrime(int number)
{
    for (int i = 2; i < number; i++)
    {
        if (number % i == 0 && i != number)
            return false;
    }
    return true;
}

Um zu verstehen, wie man dies in C implementiert, lassen Sie uns das aufschlüsseln Algorithmus:

  1. Überprüfen Sie, ob die Zahl negativ, null oder eins ist. Dies sind keine Primzahlen.
  2. Iterieren Sie von 2 bis zur Quadratwurzel der Zahl.
  3. Überprüfen Sie bei jeder Iteration, ob die Zahl durch den aktuellen Wert teilbar ist.
  4. Wenn teilbar, die Zahl ist keine Primzahl.
  5. Wenn die Schleife abgeschlossen wird, ohne einen Teiler zu finden, ist die Zahl teilbar prime.

Wenn wir diesen Algorithmus in C übersetzen, erhalten wir:

int IsPrime(unsigned int number) {
    if (number <= 1) return 0; // zero and one are not prime
    unsigned int i;
    for (i=2; i*i<=number; i++) {
        if (number % i == 0) return 0;
    }
    return 1;
}

Unterschiede zur ursprünglichen C#-Lösung umfassen:

  • bool ist kein C-Datentyp, daher verwenden wir int und geben stattdessen 0/1 zurück.
  • stdbool.h wird nicht als solche angenommen verfügbar, daher deklarieren wir i manuell.
  • Aus Effizienzgründen iteriert die Schleife bis zur Quadratwurzel der Zahl.

Das obige ist der detaillierte Inhalt vonWie kann man effizient bestimmen, ob eine Zahl in C eine Primzahl ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn