|
Sieb des Erastosthenes - C++
|
- Aufgabe
Finden von Primzahlen.
1. Boolean-Array mit true bis max füllen
2. weil 0 und 1 laut Definition keine Primzahl, diese Streichen
(durch 0 ersetzen)
3. dann nächste nicht gestrichen Zahl suchen (2)
4. um den Wert dieser Zahl weitergehen und streichen (4,6,8,10)
5. wenn Ende des Arrays erreicht dann zu Punkt 3. gehen
6. übrig bleiben alle nichtgestrichenen Zahlen -> Primzahlen (2,3,5,7)
- Struktogramm
- Quellcode
#include<iostream.h>
// Funktion: Sieb des Erastosthenes, Primzahlen ausgeben
// Autor : DG1XPZ
// Sprache : Borland C++ V5.0
void prim(int p);
const max=100000;
void main(void){
int p;
cout<<"Sieb des Erastosthenes, Primzahlen
ausgeben.\n";
cout<<"Bitte Zahl eingeben, bis zu der die Primzahlen ausgegeben werden
sollen:\n";
cout<<"(max "<<max<<"):";
cin>>p;
prim(p);
}
void prim(int p){
int i,j;
bool z[max];
z[1]=false;
for(i=2;i<=p;i++){
z[i]=true;
}
for(i=2;i<p/2;i++){
for(j=2;j<p/i;j++){
z[i*j]=false;
}
}
for(i=2;i<=p;i++){
if (z[i]) cout<<i<<",";
}
cout<<"\b \n";
}
- Download erastos.zip
|
|
|