0 Daumen
647 Aufrufe

Frage:

also ich soll ein programm schreiben, dass überprüft ob eine Zahl eine vollkommene Zahl ist.

Eine Zahl heißt vollkommen, wenn die Zahl gleich der Summe ihrer Teiler ist (die Zahl selber gilt in diesem Fall nicht als Teiler).

https://de.wikipedia.org/wiki/Vollkommene_Zahl

zb.:

6 = 1 + 2 + 3

28 = 1 + 2 + 4 + 7 + 14

Vom Code her denk ich dass ich auf einem guten Weg bin jedoch dürfte bei der Berechnung was nicht stimmen (ich vermute den Fehler fast in der for Schleife), finde leider den Fehler nicht... Vielleicht kann wer helfen wäre super dankbar! Code:

#include <stdio.h>
#include <stdlib.h>


int main(void) {
int zahl;
int i;
int j=0;
scanf ("%d", &zahl);
for(i=2;j<=zahl && (zahl%i) == 0;i++){
j=j+i;
}
if (j==zahl){
printf("The number %d is a perfect number!", zahl);
}
else {
  printf("The number %d is not a perfect number!", zahl);

EXIT_SUCCESS;
}
Avatar von

Offenbar beginnst du mit j=0. Das zweite j, was erzeugt wird, ist j=2. Vielleicht sollte das nicht so sein.

jedoch dürfte bei der Berechnung was nicht stimmen

Fehlerbeschreibungen zu eigenen Programmen beantworten üblicherweise folgende Fragen:

  • Was soll das Programm tun?
  • Was tut das Programm tatsächlich?

Übrigens: return EXIT_SUCCESS;

1 Antwort

0 Daumen
Für jedes i von 1 bis zahl-1:
    Wenn zahl durch i teilbar ist, dann addiere i zu j.
Avatar von 5,7 k

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community