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 :

Conjecture de goldbach


Sujet :

C

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Autre

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 51
    Points : 32
    Points
    32
    Par défaut Conjecture de goldbach
    Bonjour,
    je bloque sur l'écriture d'un programme qui doit vérifier sur des entrées la conjecture de Goldbach, à savoir tout nombre pair est décomposable en la somme de deux nombres premiers.
    Merci d'avance!

  2. #2
    Expert confirmé
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Points : 4 182
    Points
    4 182
    Par défaut
    Qu'as-tu à proposer ?

  3. #3
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    Sur quoi bloques-tu concrètement?

    L'algorithme ou sa transcription en code?
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  4. #4
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Autre

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 51
    Points : 32
    Points
    32
    Par défaut
    Je bloque sur l'écriture de l'algorithme

  5. #5
    Expert éminent
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 565
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 565
    Points : 7 642
    Points
    7 642
    Par défaut
    Bonjour,
    Citation Envoyé par magyy Voir le message
    Je bloque sur l'écriture de l'algorithme
    Tu as donc déjà fait le raisonnement suivant :
    Tous nombre pair est somme de :
    • soit deux nombres pairs
    • soit deux nombres impairs
    Le seul pair premier est le 2. S'il y a deux pairs, il s'agit de 2+2 : Le cas du seul nombre 4 est résolu.
    On s'intéresse donc aux nombres pairs à partir de 6, ils sont sensés être sommes de deux nombres impairs. Il faudrait essayer toutes les combinaisons.
    Pour un N donné, parcourir tous les couples impairs potentiellement premiers.
    Par exemple pour N = 14, on devrait avoir les couples (3;11) (5;9) (7;7) (9;5) et (11;3).
    Et ensuite il reste à vérifier que pour au moins un des couples, les deux nombres sont premiers.

    Maintenant, en terme informatique, je pressens les fonctions :
    • ParcourirLesNombresPairsAPartirDe6 ou DemanderLaSaisieDUnNombrePairSuperieurA6
    • ParcourirLesPairesImpairesDUnNombre
    • LeNombreEstTIlPremier

    Essayer de mettre en forme ces fonctions et d'en écrire le corps pourrait être une bonne base selon moi.
    Il faut nous proposer des choses, et nous pourrons t'aider.

  6. #6
    Membre chevronné

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2013
    Messages : 610
    Points : 1 878
    Points
    1 878
    Billets dans le blog
    21
    Par défaut
    Il y a en fait deux problèmes en 1:
    - la génération des nombres premiers, ou la vérification qu'un nombre est premier
    - la décomposition d'un nombre pair en deux nombres premiers

    L'exercice ne mentionne pas une borne pour le test, c'est-à-dire le plus grand entier à tester? Mettons une borne B, je conseillerais:
    - générer les nombres premiers jusqu'à B - 3
    - pour chaque nombre pair P entre 6 et B, on parcourt la liste des nombres premiers: si (P - premieri) appartient à liste des nombres pairs, la conjecture est vérifiée, on passe au nombre P suivant.

    Pour la génération des nombres premiers, tu peux utiliser le crible d'Eratosthène, qui n'est pas difficile à implémenter: https://fr.wikipedia.org/wiki/Crible...atosth%C3%A8ne
    Pour la suite, il ne s'agit que d'une simple boucle...

  7. #7
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Autre

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 51
    Points : 32
    Points
    32
    Par défaut
    voilà ce que j'ai pu coder à partir des explications et ça marche!
    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
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <stdbool.h>
     
    bool EstPremier(int p)
    {
        int i,d=0;
        bool b;
     
        for(i=1;i<=p;i++)
        {
            if(p%i==0)
            {
                d=d+1;
            }
        }
        if(d==2)
        {
            b=true;
        }
        else{
            b=false;
        }
        return b;
    }
     
     
    int main()
    {  int x,i,j,k=0,s;
       int t[2];
       bool m,q;
        do{
        printf("Veuillez saisir un nombre pair \n");
        scanf("%d",&x);
        }while(x%2!=0);
        if(x==4)
        {
            printf("La conjecture de Goldbach est verifie : 4 =2+2");
        }
        else
        {
            if(x>=6)
     
            {
                printf("La conjecture de Goldbach est verifie\n");
                for(i=1;i<x;i=i+2)
                {
                        for(j=1;j<x;j=j+2)
                    {
                        s=i+j;
                        if(s==x)
                        {
                            t[k]=i;
                            t[k+1]=j;
     
                            m=EstPremier(t[k]);
                            q=EstPremier(t[k+1]);
                            if((m==true)&&(q==true))
                            {
     
                            printf("%d = %d+%d \n",x,t[k],t[k+1]);
                            }
                        }
                    }
     
                }
     
            }
        }
     
        return 0;
    }
    Merci à tous de m'avoir aidé!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Python 3.X] Programme sur la conjecture de Syracuse
    Par VincentBr dans le forum Général Python
    Réponses: 7
    Dernier message: 26/10/2014, 20h29
  2. [GNU Pascal] Unite GMP pour conjecture de Collatz
    Par tekthoninks dans le forum Autres IDE
    Réponses: 5
    Dernier message: 28/03/2009, 20h39
  3. Coloration d'un graphe et conjecture des 4 couleurs
    Par Schpountz42 dans le forum Algorithmes et structures de données
    Réponses: 18
    Dernier message: 29/12/2008, 21h00

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