Advertisement
Guest User

PrimzahlenTest

a guest
Nov 24th, 2013
310
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.29 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <Windows.h>
  4. #include <limits.h>
  5.  
  6. #define DATENTYP unsigned long int
  7.  
  8. short eratosthenes(char *nListe, DATENTYP nGrenze)
  9. {
  10.     unsigned long long i, nPrimteiler = 2, q;
  11.  
  12.     if (nGrenze < 2) return 0;
  13.    
  14.     for (i = 2; i < nGrenze; i++)
  15.     {
  16.         nListe[i] = 1;
  17.     }
  18.  
  19.     while (nPrimteiler*nPrimteiler < nGrenze)
  20.     {
  21.         q = 2;
  22.         while (q*nPrimteiler < nGrenze)
  23.         {
  24.             nListe[q*nPrimteiler] = 0;
  25.             q++;
  26.         }
  27.  
  28.         do
  29.         {
  30.             nPrimteiler++;
  31.         } while (nListe[nPrimteiler] == 0);
  32.     }
  33.  
  34.     return 1;
  35. }
  36.  
  37.  
  38. double get_time()
  39. {
  40.     LARGE_INTEGER t, f;
  41.     QueryPerformanceCounter(&t);
  42.     QueryPerformanceFrequency(&f);
  43.     return (double)t.QuadPart / (double)f.QuadPart;
  44. }
  45.  
  46. int main(int nArgs,char **szArgs) {
  47.  
  48.  
  49.     DATENTYP nAnzahl = 999999999, i, nCounter = 0;
  50.     short bIsOk = 0;
  51.     double dStart,dEnd;
  52.     char *pnListe = (char*)malloc(nAnzahl * sizeof(char));
  53.     dStart = get_time();
  54.     bIsOk = eratosthenes(pnListe, nAnzahl);
  55.     dEnd = get_time();
  56.     if (bIsOk == 1)
  57.     {
  58.        
  59.         for (i = 2; i < nAnzahl; i++)
  60.         {
  61.             if (pnListe[i] == 1)
  62.             {
  63.                 //printf_s("%i ist eine Primzahl.\n", i);
  64.                 nCounter++;
  65.             }
  66.         }
  67.     }
  68.     printf_s("\n%lf Sekunden um von 2 bis %u Primzahlen zu finden.\nGefundene Primzahlen: %u\n\n", dEnd - dStart, nAnzahl, nCounter);
  69.     free(pnListe);
  70.  
  71. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement