Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <Windows.h>
- #include <limits.h>
- #define DATENTYP unsigned long int
- short eratosthenes(char *nListe, DATENTYP nGrenze)
- {
- unsigned long long i, nPrimteiler = 2, q;
- if (nGrenze < 2) return 0;
- for (i = 2; i < nGrenze; i++)
- {
- nListe[i] = 1;
- }
- while (nPrimteiler*nPrimteiler < nGrenze)
- {
- q = 2;
- while (q*nPrimteiler < nGrenze)
- {
- nListe[q*nPrimteiler] = 0;
- q++;
- }
- do
- {
- nPrimteiler++;
- } while (nListe[nPrimteiler] == 0);
- }
- return 1;
- }
- double get_time()
- {
- LARGE_INTEGER t, f;
- QueryPerformanceCounter(&t);
- QueryPerformanceFrequency(&f);
- return (double)t.QuadPart / (double)f.QuadPart;
- }
- int main(int nArgs,char **szArgs) {
- DATENTYP nAnzahl = 999999999, i, nCounter = 0;
- short bIsOk = 0;
- double dStart,dEnd;
- char *pnListe = (char*)malloc(nAnzahl * sizeof(char));
- dStart = get_time();
- bIsOk = eratosthenes(pnListe, nAnzahl);
- dEnd = get_time();
- if (bIsOk == 1)
- {
- for (i = 2; i < nAnzahl; i++)
- {
- if (pnListe[i] == 1)
- {
- //printf_s("%i ist eine Primzahl.\n", i);
- nCounter++;
- }
- }
- }
- printf_s("\n%lf Sekunden um von 2 bis %u Primzahlen zu finden.\nGefundene Primzahlen: %u\n\n", dEnd - dStart, nAnzahl, nCounter);
- free(pnListe);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement