Bonsoir à toutes et à tous,

Je suis actuellement en train de bloquer () sur un programme, avec des fonctions optimisées, qui devrait m'afficher ceci :
  • Qui détermine si un nombre est premier ou non,
  • Afficher les nombres premiers inférieur à un N,
  • Afficher les N premiers nombres premiers.


N est saisie par l'utilisateur
Voici mon programme qui stagne :

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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
#include <stdio.h>
 #include <stdlib.h>
 #include <conio.h>
 #include <math.h>
 
	int premier_1(int n)
 	{
	 int d,b;
 
 	 b = 1;
	 if (n == 0 || n == 1)
 {
 b = 0;
 } else if (n == 2)
 {
 b = 2;
 }
 if (b == 0)
 {
 return 0;
 } else if (b == 2)
 {
 printf("2\n");
 } else {
 if (n%2==0)
 {
 return 0;
 }
 for (d = 3; d <= sqrt (n); d = d + 2)
 {
 if (n%d==0)
 {
 return 0;
 }
 return 1;
 }
 
 
 }
 
 int premier_2(int x)
 {
 int j,a;
 
 if(x == 0 || x == 1)
 {
 return 0;
 }
 
 // Boucle permettant de scanner les nombres entre 0 et n
 for (j = 1 ; j <= x ; j = j + 1)
 {
 a = premier_1(j);
 
 // Affichage des nombres si ils sont premiers
 if (a == 1)
 {
 printf("%d\n",j);
 }
 }
 printf("\n");
 }
 
 void affiche (int nmax)
 {
 int i;
 for (i = 0; i <= nmax; i++)
 if(premier_1(i)==1)
 printf("%d\n",i);
 // 25 lignes -> étapes attente
 }
 
 int main()
 {
 int c;
 
 // Menu de sélection du programme
 printf("******** Exercire I ********\n\n");
 printf("1. Tester si le nombre saisi est premier\n");
 printf("2. Afficher les nombres premiers inferieurs a un nombre n\n");
 printf("3. Afficher les n premiers nombres premiers\n");
 printf("0. Quitter\n");
 scanf("%d",&c);
 
 int n,y;
 
 switch (c)
 {
 case 2 :
 {
 printf("\n******** Afficher les nombres premiers inferieurs a un nombre n ********\n\n");
 
 // Saisie de la valeur par l'utilisateur
 printf("Saisissez n : ");
 scanf("%d",&n);
 printf("\n");
 
 y = premier_2(n);
 
 getch();
 break;
 }
 
 case 1 :
 {
 printf("\n******** Tester si le nombre saisi est premier ********\n\n");
 
 // Saisie de la valeur par l'utilisateur
 printf("Saisissez n : ");
 scanf("%d",&n);
 
-	 y = premier_1(n);
	 // Affichage du message (traduction de la réponse de la fonction
 if (y == 0)
 {
 printf("\n%d n'est pas premier\n\n",n);
 } else {
 printf("%d est premier !!\n",n);
 getch();
 break;
 }
 }
 }
 	}
Je galère, je n'avance pas.

Merci à tous ceux qui prendront le temps de lire ma discussion.
Nir3x