Bonjour,
J'ai un programme pour calculer le N ième nombre premier et afficher les N - 1 nombres premiers.
j'ai voulu utiliser un pointeur pour faire un tableau ouvert et voici mon code :
ça marche en déboguage avec visual cpp 2008 express mais quand je fait executer sans déboguage (CTRL+F5) il y a des bugs à partir de N = 4.
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 #include<iostream> using namespace std; bool premier(int i) { int d = 2; bool est_premier = true; // un nombre premier n'est divisible que par un et par lui même while(est_premier && d*d<=i) if(i%d==0)est_premier=false; else d++; return est_premier; } int npremier(int N, int* tab) { int nb = 0, i = 2; // parcourir tous les nb nombres premier de 2 jusqu'a N premier while(nb != N) { if ( premier( i ) ) { tab[nb] = i; nb++; } i++; } return i - 1; } int main() { int i,N; int* premiers = new int; cout << "Tapez N :"; cin >> N; int niemepremier = npremier(N, premiers); cout << "le "<< N <<" ieme nombre premier est :" << niemepremier << endl; cout << "les premiers anterieurs a "<< niemepremier <<" sont : " << endl; for ( i = 0 ; i < N - 1 ; i++ ) { //afficher 10 colonnes if ( i > 9 ) cout << endl; cout << premiers[i] << " "; } cout << endl; return 0; }
S'il vous plait, pouvez vous me dire :
1- si ce code est correct ?
2- quel est cette histoire de bug avec mon programme dans visual ?
3- comment ensuite chronométrer le temps d'exécution du code (car je souhaiterai voir si mon compilateur c++ est plus rapide que mes autres compilateurs pour autres langages pour calculer de longues suites de nombres premiers) ?
merci d'avance.
Partager