C :: Aufgabe #49 :: Lösung #2
2 Lösungen
#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.
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
von kathleenw (3600 Punkte)
- 03.07.2020 um 09:54 Uhr
#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
Seite 1 von 0
1
