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 :

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;
}
ç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.

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.