IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Décomposition en facteurs premiers


Sujet :

C

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2022
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2022
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Décomposition en facteurs premiers
    Bonjour,
    Je dois écrire une fonction qui prend en argument un nombre et qui un tableau contenant tous ses facteurs premiers (même lorsqu'ils se répètent). J'ai essayé écrit un algorithme mais il ne marche pas. J'aimerai bien qu'on m'aide, parce que lorsque j'imprime les éléments du tableau je n'ai que des zéros.
    Voici le programme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
     
    bool nbr_premier(int a)
    {
     for (int i=2; i<a; i++)
     {
      if (a%i==0) return false;
     }
     return true;
    }
     
    int *decomp (int n)
    {
     int compt=0; int i =2;
     assert(n>=2);
     for( i;i<=n; i++)
     {
     if (nbr_premier(i))
      {
      while(n%i==0)
       {
       n/=i; compt+=1;
       }
      }
     } 
    //Compter le nombre de facteur pour avoir la taille du tableau
     
     int *c= malloc(sizeof(int)*compt);int j=2;
     for (j; j<=n; j++)
     {
       if (nbr_premier(j))
       {
        while(n%j==0)
        {
         c[j]=j; n/=j;
        }
       }
     }
     return c;
    }
    int main ()
    {
     if(nbr_premier(7)) printf("prm\n");
     else printf("nope");
     int *tab= decomp(112);
     for (int j=0; j<5; j++)
     {
      printf("%d ",tab[j]);
     }
    }

  2. #2
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par Peter_s Voir le message
    J'ai essayé écrit un algorithme mais il ne marche pas.
    Bah oui. Quand on écrit un algorithme, déjà on le réfléchit. C'est quoi un nb premier? 1 est-il premier? 2 est-il premier? pourquoi tester n/4, n/6, n/8 et n/(tous les pairs) alors qu'on pourrait éliminer cette possibilité dès le départ puis ne tester que les impairs? doit-on vraiment boucler de 2 à n-1 pour avoir l'assurance qu'il est premier (imaginons que n/p donne q tel que q soit plus petit que p, ne passera-t-on pas alors par n/q avant de tenter n/p???????)
    Ensuite un tableau (même alloué) commence à 0 or toi tu le commences à j=2
    Donc quand on a un algo (réfléchi) ensuite on le teste. On écrit une fonction "nbr_premier" on la teste un minimum avec différentes valeurs (y compris des valeurs extrèmes) avant de vouloir l'utiliser dans une fonction plus complexe.

    Que peut-on dire de plus? Ah oui, peut-être donner un code "complet" (avec les #include histoire qu'on n'ait pas en plus à le compléter nous-même pour le tester) et écrire une indentation correcte pour faciliter la lecture (ne serait-ce que la tienne si tu n'en as rien à cirer de la notre).
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2022
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2022
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Bonjour

    Bah oui. Quand on écrit un algorithme, déjà on le réfléchit. C'est quoi un nb premier? 1 est-il premier? 2 est-il premier? pourquoi tester n/4, n/6, n/8 et n/(tous les pairs) alors qu'on pourrait éliminer cette possibilité dès le départ puis ne tester que les impairs? doit-on vraiment boucler de 2 à n-1 pour avoir l'assurance qu'il est premier (imaginons que n/p donne q tel que q soit plus petit que p, ne passera-t-on pas alors par n/q avant de tenter n/p???????)
    Ensuite un tableau (même alloué) commence à 0 or toi tu le commences à j=2
    Que peut-on dire de plus? Ah oui, peut-être donner un code "complet" (avec les #include histoire qu'on n'ait pas en plus à le compléter nous-même pour le tester) et écrire une indentation correcte pour faciliter la lecture (ne serait-ce que la tienne si tu n'en as rien à cirer de la notre).
    D'accord, merci pour votre aide, je débute à peine en C et je m'excuse pour les problèmes de lecture, pour les include j'ai cru que c'était pas nécessaire.
    Merci, je vais revoir mon algorithme.

Discussions similaires

  1. décomposition en facteurs premiers
    Par Dexter80 dans le forum Programmation (La)TeX avancée
    Réponses: 5
    Dernier message: 27/06/2017, 11h44
  2. [Python 3.X] Programmation décomposition en produits de facteurs premiers d'un seul nombre
    Par Intrepid13 dans le forum Général Python
    Réponses: 16
    Dernier message: 22/09/2015, 18h47
  3. Décomposition en facteurs premiers
    Par Invité dans le forum Mathématiques
    Réponses: 7
    Dernier message: 23/04/2012, 23h39
  4. Décomposition en facteurs premiers
    Par Girl24 dans le forum Fortran
    Réponses: 6
    Dernier message: 18/11/2008, 13h08
  5. Décomposition en facteurs premiers
    Par méphistopheles dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 07/11/2005, 20h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo