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; }