pointeur et tableau ouvert
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:
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.