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

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.
#1
vote_ok
von devnull (8870 Punkte) - 09.09.2014 um 19:14 Uhr
Quellcode ausblenden C-Code
/***********************************
 * vzahl.c    vollkommene Zahl
 ***********************************/
#include <stdlib.h>
#include <stdio.h>

#define MAX 100
 
int main(int argc, char **argv) {
unsigned long at[MAX];
unsigned long N, t, sum;
int i, j;
 
    if (argc > 1)
        N = atol(argv[1]);
    else {
        printf("Eingabe Zahl: ");
        scanf("%lu", &N);
    }

    // Teiler bestimmen
    for (i=0, t=1; t<=N/2; t++)
		if (N%t == 0) at[++i] = t;

	// Teilersumme pruefen
	for (j=1,sum=0; j<=i; j++)
		sum += at[j];
	if (sum == N) {
		printf("%lu ist eine vollkommene Zahl: ", N);
	    printf("%lu", at[1]);
	    for (j=2; j<=i; j++)
		  printf("+%lu", at[j]);
		printf("=%lu\n", N);
	} else
		printf("%lu erfuellt die Bedingung nicht.\n", N);
    return 0;
}

Kommentare:

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

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