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; }
Partager