Langace C, Nombre parfait
keurdange
Messages postés
720
Date d'inscription
Statut
Membre
Dernière intervention
-
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
je suis debutant en langage et j'aimerais faire un programme qui teste si un nombre un parfait (on dit qu'un nombre est parfait s'il est égal à à la somme de ses diviseurs sauf lui même. exemple 6. Preuve: 6=3+2+1 et 6/1=6,6/2=3,6/3=2).
voici mon programmme
#include<stdio.h>
int nbr,n,som,quotient;
main()
{
do
{
printf("Entrez le nombre à tester: ");
scanf("%d", &nbr);
}
while(nbr<0);
som=0;
for(n=1;n=nbr-1;n++)
{
if(nbr%n==0)
{
quotient=nbr/n;
if(quotient==n)
som=som+1;
if(quotient!=n)
som=som+2;
}
}
if(som==nbr)
printf("%d est un nombre parfait", nbr);
else
printf("%d n'est pas un nombre parfait", nbr);
}
mais à l'exécution (je suis sous ubuntu), le curseur revient à la ligne et puis rien ne se passe.
aidez moi.
Merci
je suis debutant en langage et j'aimerais faire un programme qui teste si un nombre un parfait (on dit qu'un nombre est parfait s'il est égal à à la somme de ses diviseurs sauf lui même. exemple 6. Preuve: 6=3+2+1 et 6/1=6,6/2=3,6/3=2).
voici mon programmme
#include<stdio.h>
int nbr,n,som,quotient;
main()
{
do
{
printf("Entrez le nombre à tester: ");
scanf("%d", &nbr);
}
while(nbr<0);
som=0;
for(n=1;n=nbr-1;n++)
{
if(nbr%n==0)
{
quotient=nbr/n;
if(quotient==n)
som=som+1;
if(quotient!=n)
som=som+2;
}
}
if(som==nbr)
printf("%d est un nombre parfait", nbr);
else
printf("%d n'est pas un nombre parfait", nbr);
}
mais à l'exécution (je suis sous ubuntu), le curseur revient à la ligne et puis rien ne se passe.
aidez moi.
Merci
A voir également:
- Nombre premier en c
- Dans la présentation à télécharger, sans modifier leur position dans la feuille : passez le rectangle noir en arrière-plan. passez le rectangle bleu au premier plan. passez le rectangle hachuré au premier plan. quel mot apparaît ? - Forum LibreOffice / OpenOffice
- Cheick yvann premier jour - Forum Wii U
- Nombre de jours entre deux dates excel - Guide
- Nombre facile - Télécharger - Outils professionnels
- Quelqu'un regarde ma webcam ? - Forum Vos droits sur internet
3 réponses
Comme le disait Arya Dröttningu, ton erreur est dans la boucle for, en effet n=nbr-1 n'est pas une condition d'arrêt, c'est une affection, et du coup ta boucle ne s'arrête jamais... Modifies ça en n<=nbr-1 ou n<nbr et ça se terminera.
Remarque : ton calcul est faux, je l'ai testé entre 1 et 10000, il trouve 2 (qui n'est pas parfait) et 6 alors qu'on devrait trouver 6, 28, 496 et 8128...
Remarque : ton calcul est faux, je l'ai testé entre 1 et 10000, il trouve 2 (qui n'est pas parfait) et 6 alors qu'on devrait trouver 6, 28, 496 et 8128...