Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

87 commentaire(s) de acx01b sur des sources sur tout CodeS-SourceS

Le : 06/05/2008 15:12:46
Source : PARTIE ALIQUOTE
wops c'est

while(!(n%d)) {
     puissance_facteurs_premiers[nb]++;
     n /= d;
}

et pas

while(!(n%d)) {
     puissance_facteurs_premiers[nb]++;
     n /= 2;
}


Le : 06/05/2008 13:29:15
Source : PARTIE ALIQUOTE
salut

j'ai recodé ton programme comme je l'aurais fait, à toi de voir si c'est plus clair

#include <stdio.h>

#define MAX 10

void decomposer(int n, int *facteurs_premiers, int *puissance_facteurs_premiers, int *nombre_facteurs_premiers) {
    int nb = 0, d = 3;
    printf("%d = ",n);
    if (!(n%2)) {
        facteurs_premiers[0] = 2;
        puissance_facteurs_premiers[0] = 1;
        n /= 2;
        while(!(n%2)) {
            puissance_facteurs_premiers[0]++;
            n /= 2;
        }
        printf("2^%d * ", puissance_facteurs_premiers[0]);
        nb = 1;
    }
    while(n != 1) {
        if (!(n%d)) {
            facteurs_premiers[nb] = d;
            puissance_facteurs_premiers[nb] = 1;
            n /= d;
            while(!(n%d)) {
                puissance_facteurs_premiers[nb]++;
                n /= 2;
            }
            printf("%d^%d * ", d, puissance_facteurs_premiers[nb]);
            nb++;
        }
        d += 2;
    }
    *nombre_facteurs_premiers = nb;
}

void enumerer_diviseurs(int *facteurs_premiers, int *puissance_facteurs_premiers, int nombre_facteurs_premiers, int diviseur, int *somme_diviseurs) {
   int i;
   if (nombre_facteurs_premiers == 0) { *somme_diviseurs += diviseur; printf("%d\n", diviseur); return; }
   for (i = 0; i <= *puissance_facteurs_premiers; i++) {
      enumerer_diviseurs(facteurs_premiers+1,puissance_facteurs_premiers+1, nombre_facteurs_premiers-1,diviseur,somme_diviseurs);
      diviseur *= *facteurs_premiers;
   }
}

int main(int argc, char* argv[])
{
    int facteurs_premiers[MAX],puissance_facteurs_premiers[MAX],nombre_facteurs_premiers, Nombre, somme_diviseurs;
while(1)
{
printf("Veuillez entrer le nombre a decomposer \n");
scanf("%d",&Nombre);
printf("\n");
decomposer(Nombre,facteurs_premiers, puissance_facteurs_premiers, &nombre_facteurs_premiers);
somme_diviseurs = 0;
printf("\ndiviseurs:\n");
enumerer_diviseurs(facteurs_premiers, puissance_facteurs_premiers, nombre_facteurs_premiers, 1, &somme_diviseurs);
printf("\n\nLa partie Aliquote du nombre est %ld",somme_diviseurs);
printf("\n\n");
}
return 0;
}



Le : 05/05/2008 21:21:38
Source : PARTIE ALIQUOTE
la fonction diviseurs()

et s'il y a plus que 7 diviseurs ?

exemple 223092870 = 2*3*5*7*11*13*17*19*23


Le : 05/05/2008 10:24:25
Source : PARTIE ALIQUOTE
salut
il y a des trucs un peu bizarres (au niveau algorithmique et clarté) dans ton code!


Le : 17/03/2008 09:11:34
Source : CRÉATION D'UN FICHIER POUR CALCULER DES MOYENNE ( MARCHE SOUS LINUX , PAS TESTER SOUS WINDOWS)
il faut travailler un peu l'orthographe aussi


Le : 17/02/2008 13:57:24
Source : SODOKU EN LANGAGE C
salut j'ai pas compris ton solveur !
tu fais un backtracking on dirait ?
pourrais tu commenter ligne par ligne cette fonction (et peut-être la rendre plus claire ?)


Le : 17/02/2008 13:48:15
Source : ANALYSE DES MOTS D'UN TEXTE
je suis d'accord avec manta7 il a qu'à se renseigner sur lex avant de poster


Le : 16/02/2008 22:39:13
Source : ANALYSE DES MOTS D'UN TEXTE
salut

pour la recherche dans le dictionnaire: soit le dico est trié est tu fais ta recherche par dichotomie, soit il est trié en arbre si tu as besoin de pouvoir rajouter de nouveaux éléments, dans tous les cas il faut pouvoir faire la recherche en log n si le dico est très grand


Le : 16/02/2008 10:00:45
Source : FACTORISATION D'UN NOMBRE
salut je peux faire encore plus court

int tab[MAX]; // la factorisation
int factoriser(int n) { // n : le nombre à factoriser
  int i, d;
  i = 0;
  while (!(n & 1)) { tab[i++] = 2; n >>= 1; }
  d = 3;
  while (n != 1) {
     while(!(n % d)) { tab[i++] = d; n /= d; }
     d += 2;
  }
  return i;
}


Le : 14/02/2008 14:42:47
Source : CALCULER NOMBRE DE MERSENNE AVEC BIBLIOTHÈQUE DE GESTION DE GRANDS NOMBRES
ha d'accord !
je suis désolé je croyais que tu testais si le (2^n)-1 était premier pardon



1 2 3 4 5 6 7 8 9


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,218 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.