Primzahl oder zusammengesetzte Zahl mit Rekursion

CBeginner
Jetzt üben

Einführung

In diesem Lab werden wir lernen, wie man ein C-Programm schreibt, das mithilfe von Rekursion überprüft, ob eine Zahl eine Primzahl oder eine zusammengesetzte Zahl ist. Eine Primzahl ist eine Zahl, die nur durch 1 und sich selbst teilbar ist, während eine zusammengesetzte Zahl eine Zahl ist, die keine Primzahl ist. Wir werden die Rekursion verwenden, um das Programm zu schreiben, was eine Technik ist, um Probleme zu lösen, indem man sie in kleinere, einfachere Probleme zerlegt.

Benutzer-Eingaben erhalten

Wir beginnen, indem wir den Benutzer bitten, eine positive ganze Zahl einzugeben, um zu überprüfen, ob es sich um eine Primzahl oder eine zusammengesetzte Zahl handelt, indem wir die scanf-Funktion verwenden. Fügen Sie den folgenden Code in die main.c-Datei innerhalb der int main()-Funktion hinzu:

#include <stdio.h>

int main()
{
    int num;
    printf("Geben Sie eine positive ganze Zahl ein: ");
    scanf("%d", &num);
    return 0;
}

Schreiben der rekursiven Funktion zum Überprüfen der Zahl

In diesem Schritt werden wir die rekursive Funktion schreiben, um zu überprüfen, ob die Zahl eine Primzahl oder eine zusammengesetzte Zahl ist. Diese Funktion nimmt zwei Argumente entgegen - die zu überprüfende Zahl und eine Zählervariable, die bei der Zahl beginnt, die durch 2 geteilt wird. Wenn der Zähler auf 1 erreicht, gibt die Funktion 1 zurück, was angibt, dass die Zahl eine Primzahl ist, andernfalls ruft die Funktion sich selbst mit der verringerten Zählervariable rekursiv auf. Wenn an irgendeinem Punkt die Zahl ohne Rest durch die Zählervariable teilbar ist, gibt die Funktion 0 zurück, was angibt, dass die Zahl eine zusammengesetzte Zahl ist. Fügen Sie den folgenden Code am Ende der main.c-Datei hinzu:

int isPrime(int n, int c)
{
    if (c == 1) {
        return 1;
    } else {
        if (n % c == 0) {
            return 0;
        } else {
            return isPrime(n, c - 1);
        }
    }
}

Überprüfen und Ausgeben des Ergebnisses

In diesem Schritt werden wir die isPrime-Funktion aufrufen, um zu überprüfen, ob die Zahl eine Primzahl oder eine zusammengesetzte Zahl ist. Basierend auf dem Ergebnis der Funktion werden wir der Benutzer die entsprechende Nachricht ausgeben. Fügen Sie den folgenden Code am Ende der main.c-Datei hinzu, um das Programm abzuschließen:

int main()
{
    int num, prime;
    printf("Geben Sie eine positive ganze Zahl ein: ");
    scanf("%d", &num);
    prime = isPrime(num, num/2);
    if (prime == 1) {
        printf("%d ist eine Primzahl.\n", num);
    } else {
        printf("%d ist eine zusammengesetzte Zahl.\n", num);
    }
    return 0;
}

Programm bauen und ausführen

In diesem Schritt werden wir das Programm kompilieren und ausführen. Öffnen Sie das Terminal und navigieren Sie zum Verzeichnis, in dem die main.c-Datei gespeichert ist. Fügen Sie den folgenden Befehl im Terminal hinzu, um das Programm zu kompilieren:

gcc main.c -o main

Fügen Sie den folgenden Befehl hinzu, um das Programm auszuführen:

./main

Geben Sie bei der Aufforderung eine positive ganze Zahl ein und drücken Sie die Enter-Taste. Das Programm wird ausgeben, ob die Zahl eine Primzahl oder eine zusammengesetzte Zahl ist.

Zusammenfassung

In diesem Lab haben wir gelernt, wie man ein C-Programm schreibt, das mithilfe von Rekursion überprüft, ob eine Zahl eine Primzahl oder eine zusammengesetzte Zahl ist. Wir haben auch gelernt, wie man die scanf-Funktion verwendet, um Benutzer-Eingaben zu erhalten, eine rekursive Funktion schreibt, um zu überprüfen, ob eine Zahl eine Primzahl oder eine zusammengesetzte Zahl ist, und das Ergebnis an den Benutzer ausgibt. Rekursion ist eine nützliche Technik, um Probleme zu lösen, die darin bestehen, sie in kleinere, einfachere Probleme aufzuteilen.