2 votes

Boucles de base en C - Comment trouver la somme de facteurs

Je suis dans mon cours de C depuis environ 4 semaines, et je travaille sur un programme qui produirait essentiellement le résultat suivant -

 ./perfect
Enter number: 6
The factors of 6 are:
1
2
3
6
Sum of factors = 12
6 is a perfect number

./perfect
Enter number: 1001
The factors of 1001 are:
1
7
11
13
77
91
143
1001
Sum of factors = 1344
1001 is not a perfect number

Mon travail jusqu'à présent -

// Testing if a number is perfect

#include <stdio.h>

int main (void) {

//Define Variables
    int input, sum;
    int n;

//Obtain input
    printf("Enter number: ");
    scanf("%d", &input);

//Print factors
    printf("The factors of %d are:\n", input);

    n = 1;
    while (n <= input) {
        if (input % n == 0) {
            printf("%d\n", n);

        }

        n = n + 1;

    }
    //Sum of factors
    //printf("Sum of factors = %d", sum);

    //Is it a perfect number?
    if (sum - input == input) {
        printf("%d is a perfect number", input);
    } else if (sum - input == !input) {
        printf("%d is not a perfect number", input);

    }

    return 0;
}

J'ai donc terminé la première et la dernière partie (je pense). C'est juste la somme des facteurs intermédiaires qui me pose problème.

Comment additionner tous les facteurs ? Doit-elle faire partie de la première boucle while, ou être placée séparément ?

Toute aide serait grandement appréciée !

Merci !

0voto

cleblanc Points 3157

Oui. J'initialiserais sum=0 au début et ajouterais sum += n ; à la première boucle while. Cela devrait faire l'affaire pour vous.

0voto

Luanf Points 90

Vous pourriez le faire dans la première boucle. Par exemple,

    factorsSum = 0;
    while (n <= input) {
    if (input % n == 0) {
        printf("%d\n", n);
        factorsSum += n;
    }

J'espère que cela vous aidera =)

0voto

abhiarora Points 1277

Essaie celle-là.

#include <stdio.h>

int main (void) {

//Define Variables
int input, sum;
int n;

//Obtain input
printf("Enter number: ");
scanf("%d", &input);

//Print factors
printf("The factors of %d are:\n", input);

for (n=1, sum=0; n <= input; n++) {
    if (input % n == 0) {
        printf("%d\n", n);
        sum += n;
    }
}
//Sum of factors
//printf("Sum of factors = %d", sum);

//Is it a perfect number?
if ((sum - input) == input) {
    printf("%d is a perfect number", input);
} else {
    printf("%d is not a perfect number", input);
}

return 0;
}

0voto

Uysses Points 31
var sum =0;

    for (var i=1, sum=0; i <= input/2; i++) {
           if (input % i == 0) {
               printf("%d\n", n);
               sum += i;
           }    
}    
//Sum of factors    
//printf("Sum of factors = %d", sum);

ce code fonctionnera parfaitement pour vous. avec moins de nombre de boucles pour plus d'informations voir ici

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X