Überprüfung, ob eine Zahl in C vollkommen ist

CCBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab lernen Sie, wie Sie ein C-Programm schreiben, um zu überprüfen, ob eine gegebene Zahl eine vollkommene Zahl ist. Das Programm liest eine ganzzahlige Eingabe vom Benutzer, berechnet die Summe ihrer echten Teiler und bestimmt dann, ob die Zahl vollkommen ist oder nicht. Das Lab deckt grundlegende Konzepte der Zahlentheorie und diskreten Mathematik ab und bietet eine praktische Anwendung dieser Prinzipien in der C-Programmierung.

Das Programm fordert den Benutzer zunächst auf, eine positive ganze Zahl einzugeben, berechnet dann die Summe der echten Teiler der Zahl (d.h. alle positiven ganzen Zahlen kleiner als die Zahl, die die Zahl ohne Rest teilen). Schließlich vergleicht das Programm die Summe der echten Teiler mit der ursprünglichen Zahl und gibt das Ergebnis aus, das angibt, ob die Zahl vollkommen ist oder nicht.

Eine ganze Zahl einlesen

In diesem Schritt lernen Sie, wie Sie eine ganzzahlige Eingabe in C für die Überprüfung vollkommener Zahlen einlesen. Wir erstellen ein C-Programm, das es Benutzern ermöglicht, eine zu analysierende Zahl einzugeben.

Erstellen Sie zunächst eine neue C-Datei im Projektverzeichnis:

cd ~/project
nano perfect_number.c

Fügen Sie nun folgenden Code zur Datei hinzu:

#include <stdio.h>

int main() {
    int zahl;

    // Benutzer nach Eingabe fragen
    printf("Geben Sie eine positive ganze Zahl ein, um zu prüfen, ob es sich um eine vollkommene Zahl handelt: ");
    scanf("%d", &zahl);

    // Die eingegebene Zahl ausgeben, um die Eingabe zu verifizieren
    printf("Sie haben eingegeben: %d\n", zahl);

    return 0;
}

Beispielausgabe:

Geben Sie eine positive ganze Zahl ein, um zu prüfen, ob es sich um eine vollkommene Zahl handelt: 28
Sie haben eingegeben: 28

Lassen Sie uns den Code aufschlüsseln:

  • #include <stdio.h> beinhaltet die Standard-Eingabe/Ausgabe-Bibliothek
  • scanf("%d", &zahl) liest eine ganzzahlige Eingabe vom Benutzer
  • printf() wird verwendet, um nach der Eingabe zu fragen und die eingegebene Zahl anzuzeigen

Kompilieren und führen Sie das Programm aus:

gcc perfect_number.c -o perfect_number
./perfect_number

Summe der echten Teiler und Vergleich mit der Zahl

In diesem Schritt modifizieren Sie das vorherige C-Programm, um die Summe der echten Teiler zu berechnen und festzustellen, ob die Zahl vollkommen ist.

Öffnen Sie die vorhandene Datei und aktualisieren Sie den Code:

nano ~/project/perfect_number.c

Ersetzen Sie den vorherigen Code durch:

#include <stdio.h>

int main() {
    int zahl, summe = 0;

    // Benutzer nach Eingabe fragen
    printf("Geben Sie eine positive ganze Zahl ein, um zu prüfen, ob es sich um eine vollkommene Zahl handelt: ");
    scanf("%d", &zahl);

    // Summe der echten Teiler berechnen
    for (int i = 1; i < zahl; i++) {
        if (zahl % i == 0) {
            summe += i;
        }
    }

    // Überprüfen, ob die Zahl vollkommen ist
    if (summe == zahl) {
        printf("%d ist eine vollkommene Zahl!\n", zahl);
    } else {
        printf("%d ist keine vollkommene Zahl.\n", zahl);
    }

    return 0;
}

Kompilieren und führen Sie das Programm aus:

gcc perfect_number.c -o perfect_number
./perfect_number

Beispielausgabe für eine vollkommene Zahl:

Geben Sie eine positive ganze Zahl ein, um zu prüfen, ob es sich um eine vollkommene Zahl handelt: 28
28 ist eine vollkommene Zahl!

Beispielausgabe für eine keine vollkommene Zahl:

Geben Sie eine positive ganze Zahl ein, um zu prüfen, ob es sich um eine vollkommene Zahl handelt: 12
12 ist keine vollkommene Zahl.

Erklärung der Schlüsselkonzepte:

  • Die for-Schleife iteriert durch Zahlen von 1 bis zahl - 1
  • zahl % i == 0 prüft, ob i ein Teiler der Zahl ist
  • summe += i addiert alle echten Teiler
  • Eine vollkommene Zahl ist eine positive ganze Zahl, die gleich der Summe ihrer echten Teiler ist

Ergebnis ausgeben

In diesem letzten Schritt erweitern Sie das Programm, um detailliertere Informationen über die vollkommene Zahl auszugeben, einschließlich ihrer Teiler und ihrer Summe.

Öffnen Sie die Datei und aktualisieren Sie den Code:

nano ~/project/perfect_number.c

Ersetzen Sie den vorherigen Code durch:

#include <stdio.h>

int main() {
    int zahl, summe = 0;

    // Benutzer nach Eingabe fragen
    printf("Geben Sie eine positive ganze Zahl ein, um zu prüfen, ob es sich um eine vollkommene Zahl handelt: ");
    scanf("%d", &zahl);

    // Überschrift für die Teiler ausgeben
    printf("Echte Teiler von %d: ", zahl);

    // Summe der echten Teiler berechnen und ausgeben
    for (int i = 1; i < zahl; i++) {
        if (zahl % i == 0) {
            printf("%d ", i);
            summe += i;
        }
    }

    // Detailliertes Ergebnis ausgeben
    printf("\n\nSumme der echten Teiler: %d", summe);

    // Vollkommene-Zahl-Status prüfen und ausgeben
    if (summe == zahl) {
        printf("\n%d ist eine vollkommene Zahl!\n", zahl);
    } else {
        printf("\n%d ist keine vollkommene Zahl.\n", zahl);
    }

    return 0;
}

Kompilieren und führen Sie das Programm aus:

gcc perfect_number.c -o perfect_number
./perfect_number

Beispielausgabe für eine vollkommene Zahl (28):

Geben Sie eine positive ganze Zahl ein, um zu prüfen, ob es sich um eine vollkommene Zahl handelt: 28
Echte Teiler von 28: 1 2 4 7 14

Summe der echten Teiler: 28
28 ist eine vollkommene Zahl!

Beispielausgabe für eine keine vollkommene Zahl (12):

Geben Sie eine positive ganze Zahl ein, um zu prüfen, ob es sich um eine vollkommene Zahl handelt: 12
Echte Teiler von 12: 1 2 3 4 6

Summe der echten Teiler: 16
12 ist keine vollkommene Zahl.

Wichtige Verbesserungen:

  • Jetzt werden alle echten Teiler ausgegeben.
  • Die Summe der echten Teiler wird angezeigt.
  • Eine klare, formatierte Ausgabe wird bereitgestellt.
  • Die Kernlogik der vollkommenen-Zahl-Erkennung wird beibehalten.

Zusammenfassung

In diesem Labor lernen Sie, wie Sie eine ganzzahlige Eingabe in C lesen und bestimmen, ob eine Zahl vollkommen ist. Zuerst erstellen Sie ein C-Programm, das den Benutzer auffordert, eine positive ganze Zahl einzugeben. Anschließend berechnen Sie die Summe der echten Teiler der Zahl und vergleichen sie mit der ursprünglichen Zahl, um zu prüfen, ob es sich um eine vollkommene Zahl handelt. Schließlich geben Sie das Ergebnis auf der Konsole aus.

Die wichtigsten Lernpunkte dieses Labors sind: das Lesen ganzzahliger Eingaben mit scanf(), das Berechnen der Summe der echten Teiler mithilfe einer for-Schleife und der Vergleich der Summe mit der ursprünglichen Zahl, um festzustellen, ob es sich um eine vollkommene Zahl handelt.