Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * 0 = nicht durchgestrichen
- * 1 = durchgestrichen
- */
- #include <stdio.h>
- #include <stdlib.h>
- #include <windows.h>
- #include <math.h>
- #include <time.h>
- clock_t prgstart, prgende;
- int main(){
- unsigned long int limit;
- unsigned long int i=0, j=0;
- unsigned long int anzahl=0;
- printf("Geben Sie das Limit ein!\n"); //Aufforderung zur Eingabe des Limits
- scanf("%li", &limit);
- system("cls");
- unsigned long int prim[limit+1];
- //Array mit limit+1 Zellen anlegen
- //Da die Zelle von limit benötigt wird
- //wird die Zellenzahl auf limit+1 gesetz
- //unsigned long int prim[limit];
- prgstart=clock();
- for(i=2; i<=limit; i++){
- prim[i]=0; //Alle Zahlen außer 0 und 1 auf nicht durchgestrichen setzen
- }
- prim[1]=1; //1 ist keine Primzahl und wird daher durchgestrichen
- i=2; //2 ist die kleinste Primzahl weshalb i auf 2 gesetzt wird
- while(i*i <= limit){
- //Schleife wird solange wiederholt bis i^2 größer
- //dem Limit ist.
- if(prim[i]==0) //Falls i noch nicht durchgestrichen worden ist
- {
- j=i << 1; //j stellt nun das Vielfache von i dar
- while(j<=limit){
- //Schleife wird wiederholt solange j
- //im Intervall von 1 bis limit ist
- prim[j]=1; //Das Vielfache wird gestrichen
- j+=i; //j wird auf den Wert des nächsten Vielfachen gesetzt
- }
- }
- i++; //setze i auf den nächsten zu überpüfenden Wert
- }
- prgende=clock();
- for(i=2; i<=limit; i++){
- if(prim[i]==0){
- anzahl++;
- printf("%lu\n", i);
- }
- }
- printf("\n\nDie Rechenzeit betrug %.2f Mikrosekunden\n",
- (float)((prgende-prgstart) / CLOCKS_PER_SEC));
- printf("\n\n\n%lu Primzahlen im gewaehlten Bereich...", anzahl);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement