Bonjour � tous,
Voil�, je suis d�butant en programmation, j'ai fait un petit programme permettant de cr�er une liste de nombre premier.

Le probl�me est que lorsque je cr�e un tableau de plus de 500000 entr�es, au bout d'un certain temps, une erreur se produit et m'annonce que la m�moire n'est plus lisible.

Y a t'il une solution pour cr�er un tableau plus grand ?

Merci d'avance.
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
#include <iostream>
#include <math.h>
 
 
bool isprime(unsigned int nbr,  unsigned int *premier){
    unsigned int db,racine;
    racine=ceil(sqrt(nbr));
    db=1;
 // On essais de diviser "nbr" par tous les nombres premiers inférieur ou égal à sa racine
    while(*(premier+db)<=racine){
        if(nbr%(*(premier+db))==0) return 0;
        db++;
    }
    return 1;
}
 
 
int main()
{
unsigned int nbr,i,k,ch;
 
std::cout<<"TAILLE DU TABLEAU : ";
std::cin>>ch;
std::cout<<std::endl;
 
if(ch<3)ch=3;
 
unsigned int *premier=new unsigned int[ch];   // Création du tableau contenant les nombres premiers
 
 
    premier[0]=2;
    premier[1]=3;
    premier[2]=5;
    k=1;
    i=3;
 
    while(i!=ch)
    {
        nbr=6*k+1; // Fait que tous les nombres premiers sont congru à 6 modula 1 et congru à 6 modulo 5  
        if(isprime(nbr,premier)==1){
            premier[i]=nbr;
            i++;
        }
 
       nbr=6*k+5;
        if(isprime(nbr,premier)==1){
            premier[i]=nbr;
            i++;
        }
 
        k++;
    }
 
 
	std::cout << "Le dernier nombre premier trouvé est : " <<premier[ch-1]<< std::endl;
	delete[] premier;
	return 0;
}