C :: Aufgabe #49 :: Lösung #2

2 Lösungen Lösungen öffentlich
#49

vollkommene Zahl (Mathematisches Problem)

Anfänger - C von bibir - 03.09.2014 um 08:21 Uhr
Man nennt eine natürliche Zahl N "vollkommen", wenn die Summe aller echten Teiler von N gleich N ist.

Zum Beispiel ist 28 eine vollkommene Zahl, da 1 + 2 + 4 + 7 + 14 = 28 ist.

Schreibe ein Programm/Skript, das beliebig oft eine Zahl N (mit 0 < N < 100000) einliest und feststellt, ob N eine vollkommene Zahl ist. Falls ja, soll das Programm N und die zugehörenden echten Teiler ausgeben, andernfalls ist nur N und die Meldung "ERFUELLT DIE BEDINGUNG NICHT" zu drucken.
#2
vote_ok
von kathleenw (3600 Punkte) - 03.07.2020 um 09:54 Uhr
Quellcode ausblenden C-Code
#include <stdio.h>

int main()
{
    long zahl, summe;
    int i, anzahl_teiler;
    char beenden;
    int teiler[100];
    
    summe = 0;
    anzahl_teiler = 0;
    
    do {
        printf("Welche Zahl zwischen 0 und 100000 soll auf Vollkommenheit geprüft werden: ");
        scanf("%ld", &zahl);
        fflush(stdin);
        
        for (i=1;i<=(zahl/2);i++) {
            if (zahl % i == 0) {
                summe = summe + i;
                teiler[anzahl_teiler] = i;
                anzahl_teiler++;
            }
        }
        
        if(summe == zahl){
            printf("\nDie Zahl ist vollkommen.\n");
            printf("Die Zahl hat %d Teiler.\n", anzahl_teiler);
            printf("Folgende Teiler hat die Zahl: ");
            for (i=0;i<anzahl_teiler;i++)
                printf("%d ", teiler[i]);
            printf("\n");
        }
        else
            printf("\nDie Zahl %ld ist nicht vollkommen.\n", zahl);
        printf("Noch einmal? j/n  ");
        scanf("%c", &beenden);
        fflush(stdin);
    }while(beenden=='j');
        
}

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben