Hallo,
Bei der berechnung von Primzhalen bekomme ich einen Stackoverflow wenn die zahlen zu groß sind (ca. ab 600.000), was kann ich dagegen tun, damit die berechnung für wesentlich größere Zahlen durchgeführt werden kann?
Alles anzeigen
viele grüße & thx
bo
Bei der berechnung von Primzhalen bekomme ich einen Stackoverflow wenn die zahlen zu groß sind (ca. ab 600.000), was kann ich dagegen tun, damit die berechnung für wesentlich größere Zahlen durchgeführt werden kann?
Quellcode
- #include <cmath>
- #include <iostream>
- #define GROESSE 600000
- int eingabe(){
- int n;
- std::cout << "Feldgröße N: ";
- std::cin >> n;
- return n;
- }
- void berechnung(int *feld){
- int i;
- int j;
- //Feldinhalt mit 0 initialisieren
- for(i = 0; i <= GROESSE; i++){
- feld[i]=1;
- }
- //i auf erste Primzahl(2) setzen
- i=2;
- while(i <= GROESSE/2){
- while(feld[i]!=1 && i<=GROESSE){
- i++;
- }
- //Vielfaches von i streichen(0)
- for(j = 2*i; j <= GROESSE; j += i){
- feld[j] = 0;
- }
- //Suchen nach erst gestrichener Zahl(0)
- i++;
- }
- }
- void ausgabe(int *feld){
- int i;
- for(i = 2; i <= GROESSE; i++){
- if(feld[i] == 1){
- std::cout << "Primzahl: " << i << "\n";
- }
- }
- }
- int main(void){
- int n = eingabe();
- int feld[GROESSE];
- if(feld!=NULL){
- berechnung(feld);
- ausgabe(feld);
- }else{
- std::cout << "Es Konnte kein Speicher reserviert werden!!!";
- }
- std::cout << "Feldgröße N: ";
- std::cin >> n;
- return 0;
- }
viele grüße & thx
bo