Problem en C avec les nombres parfaits
Répondre à la discussion
Affichage des résultats 1 à 7 sur 7

Problem en C avec les nombres parfaits



  1. #1
    invite82259f5e

    Problem en C avec les nombres parfaits


    ------

    Salut tous. j'ai fait un programme en C pour me donner les dix premiers nombres parfait mais il me donne selement les trois premiers.
    voila le programme:

    Code:
    #include<stdio.h>
    unsigned  Testparfi(unsigned N)
    { unsigned  i,s=1,r,n;
      for(i=2;i<N;i++)
        {
    		  r=N%i;
    	     if (r==0) s=s+i;
    		}
    		if(s==N) r=1;
    		else r=0;
    		return r;
    }
    main (void)
    {
    	unsigned   i=2,k=0;
    	
    	while(k<=10)
    	{
    		if (Testparfi(i)==1) 
    		{
    			k++;
    		printf("%d \n",i);
    		}
    		
    		 i++;
    		}
    		printf("  k=%d",k);
    		
    }

    -----
    Dernière modification par JPL ; 08/06/2013 à 13h52. Motif: Ajout de la balise Code (#) pour garder l'indentation

  2. #2
    invite2d7144a7

    Re : Problem en C avec les nombres parfaits

    Bonjour,

    Mets ton code en forme, et encadre le avec la balise code. Là c'est illisible.

    Obtenir de l'aide ne doit pas obliger les volontaires à faire une partie du travail.

    Un code bien indenté, aéré (lignes vides pour séparer les blocs de code), identifiants significatifs (noms qui identifient immédiatement à quoi correspond une variable ou constante ou fonction) est nécessaire pour faciliter la lecture.
    Ces principes d'écriture n'ont pas été imaginés pour "faire beau".

  3. #3
    invite43901482

    Re : Problem en C avec les nombres parfaits

    C'est le genre d'algorithme de recherche qui risque de ramer à partir du 5ème nombre (qui se rapproche des 33 millions)

    Voici pour les 4 premiers, pour les 10 premiers l'algorithme devra changer

    Code:
    #include <stdio.h>
    #include <stdlib.h>
    
    #define MAXI 10000
    
    int main(void)
    {
        int somme, n, i;
    
        for (n=1; n<MAXI; n++)
        {
            somme = 0;
            for (i=1; i<(n-1); i++)
            {
                if (n%i == 0)
                    somme += i;
            }
            if (somme == n)
                printf("Le nombre %d est parfait\n", n);
        }
        return 0;
    }
    Comme tu le vois entre balises code, c'est bien mieux

  4. #4
    invite82259f5e

    Re : Problem en C avec les nombres parfaits

    Oui c'est vrai. merci d'abord

  5. A voir en vidéo sur Futura
  6. #5
    invite82259f5e

    Re : Problem en C avec les nombres parfaits

    Mais qu'est-ce que je peux changer pour avoir les dix premiers???

  7. #6
    invite2d7144a7

    Re : Problem en C avec les nombres parfaits

    Hoa,

    Pour info, et en quelques secondes, tu trouveras la liste des nombres parfaits, on n'en connaît que 48.

    Le 10ème de la liste vaut

    191 561 942 608 236 107 294 793 378 084 303 638 130 997 321 548 169 216

    soit de l'ordre de 1054.

    Tu vois donc qu'il va te falloir du temps pour y arriver, et que tu ne pourras pas le faire avec les types natifs de ton langage de programmation.

  8. #7
    invite82259f5e

    Re : Problem en C avec les nombres parfaits

    maintenant je comprends merci quand même

Discussions similaires

  1. Un petit problem avec les polynomes
    Par invitec5fc22a0 dans le forum Mathématiques du collège et du lycée
    Réponses: 13
    Dernier message: 02/04/2011, 09h40
  2. Problem avec les valeurs de l'EEPROM de mon PIC
    Par schneiderj dans le forum Électronique
    Réponses: 2
    Dernier message: 31/03/2009, 18h17
  3. Nombres Parfaits TermS Spé Maths
    Par invite2fd735b7 dans le forum Mathématiques du collège et du lycée
    Réponses: 14
    Dernier message: 01/11/2006, 16h25
  4. Les carrés parfaits et cubes parfaits
    Par invitefc05a696 dans le forum Mathématiques du supérieur
    Réponses: 12
    Dernier message: 31/01/2006, 14h36