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!
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!
Qu'as-tu à proposer ?
Sur quoi bloques-tu concrètement?
L'algorithme ou sa transcription en code?
Mes principes de bases du codeur qui veut pouvoir dormir:Pour faire des graphes, essayez yEd.
- 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.
le ter nel est le titre porté par un de mes personnages de jeu de rôle
Je bloque sur l'écriture de l'algorithme
Bonjour,
Tu as donc déjà fait le raisonnement suivant :
Tous nombre pair est somme de :
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.
- soit deux nombres pairs
- soit deux nombres impairs
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.
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...
voilà ce que j'ai pu coder à partir des explications et ça marche!
Merci à tous de m'avoir aidé!!
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; }
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager