Hledání prvočísel v C

Program vytvoří pole s čísly. V poli následně hledá prvočísla do limitu zadaného uživatelem (2 až 10000). Změnou datového typu lze hledání rozšířit pro větší čísla.


#include <stdio.h>
#include <stdlib.h>

int cisla [10001];
int max;
int cislo;
int pozice;

int main(){
    printf("Program na hledani prvocisel od 1 do 10000\n");
    printf("----------------------------------------");
    printf("----------------------------------------");
    printf("\n");

    printf("Vyhledat prvocila do cisla: ");
    scanf("%i", &max);
    printf("\n");

    printf("----------------------------------------");
    printf("----------------------------------------");
    printf("\n");

    if (max < 10001){
            vsechna();
            eliminace();
            vypis();
    }
    else {
            printf("Zadani je mimo rozsah!");}

    printf("\n");
    printf("----------------------------------------");
    printf("----------------------------------------");
    printf("\n");
    printf("\n");

  system("PAUSE");
  return 0;
}

//** Naplneni pole cisly ***********************************

void vsechna(){
    pozice = 0;
    cislo = 0;

    while (pozice <= max){
        cisla[pozice] = cislo;
        pozice++;
        cislo++;
    }

    pozice = 0;
    cislo = 0;
    return;
}


//** Eliminace cisel jenz nejsou prvocisla *****************

void eliminace(){
    pozice = 3;
    cislo = 0;

    while (pozice <= max){
            cislo = pozice - 1;
            while(cislo > 1){
                if ((pozice % cislo) == 0){ //pokud neni prvocislo
                        cisla[pozice] = 0;  //nahrad jej nulou
                }
                cislo--;
            }
        pozice++;
    }

    pozice = 0;
    cislo = 0;
    return;
}

//** Vypis prvocisel z pole ************************************
void vypis(){
    pozice = 2;

    while (pozice <= max){
            if (cisla[pozice] != 0){  // pokud neni cislo 0
                    printf("%7i " , cisla[pozice]);    //8 znaku na cislo (7 + mezera)
            }                                          //pro 80 znaku na radek
        pozice++;
    }

    return;
}

asfsgdhfh5445544554