Ich bin ziemlich neu in der Codierung und ich studiere C. Mein Klassenlehrer gab eine Aufgabe des Schreibens eines Programms, das uns sagen wird, welche ganzen Zahlen sind "perfekte Zahlen" (Zahlen, in denen die Faktoren Ohne die Zahl selbst addiert man sich zu der Zahl, zB 6 = 1 + 2 + 3, also ist 6 eine perfekte Zahl.) Ich stehe vor einigen Problemen mit dem Code, den ich geschrieben habe, und hoffe, einen Rat zu bekommen.Perfekte Zahlen mit einem C-Programm finden
#include <stdio.h>
int main(void) {
int number, counter, sum;
sum = 0;
printf("For the integers from 1 to 1000:\n");
for (number = 1; number <= 1000; number++) {
counter = 1;
while (counter <= number - 1) {
if ((number - 1) % counter == 0) {
sum += counter;
}
}
if (sum == number) {
printf("%d is a perfect number.\n", number);
}
}
return 0;
}
Dies ist der Code, den ich geschrieben habe. Das Problem, mit dem ich konfrontiert bin, ist, dass wenn ich das Programm ausführe, es nur "Für die Ganzzahlen von 1 bis 1000:" druckt und dann stoppt es. Das Programm endet nicht oder so.
Abgesehen von dem Problem, das ich erwähnt habe, sind alle Ratschläge oder Vorschläge sehr willkommen.
Vielen Dank!
Ihre 'while' Schleife ist unendlich, wenn sie eingegeben wird. –
'if ((number - 1)% counter == 0) {' das gibt dir die perfekte Zahl für 'number-1'. Ersetzen Sie es durch 'if ((number)% counter == 0) {'. – AntonH
Weder 'number' noch' counter', die einzigen beiden Varianten Ihrer while-Bedingung, werden innerhalb Ihrer while-Schleife geändert. Sobald du drin bist, bist du permanent dabei. * Etwas * muss sich ändern. – WhozCraig