Link do ćwiczenia:
http://www.spoj.com/problems/PRIME1/ czyli - program ma za zadanie generować liczby pierwsze i faktycznie - działa , tyle że od 1 do 1 000 000 000 zajmuje to no.. sporo więcej czasu niż jest dostępny. Wykorzystałem tutaj sito eratostenesa, jednak nie mam pojęcia jak mógłbym sprawić żeby program działał szybciej. teraz drobny spojler jak ja to zrobiłem (tya..)
int sito(bool *tab, int max) //tab wskazuje na tablice bool, max to liczba do której ma być sprawdzane
{
int licznik; //to jest do pętli while
for (int i=2; i<sqrt(max); i++) //tutaj chyba wszystko jest jasne
{
if(tab[i-2]==true) //tutaj żeby pętla faktycznie się wykonywała tylko dla liczb pierwszych
{
licznik=i+i;
while(licznik<max) //pętla while jest żeby pozbywać się liczb które pierwsze nie są
{
tab[licznik-2]=false; //"wykreśla" liczby pierwsze
licznik+=i;
}
}
}
}
Byłbym niezmiernie wdzięczny jakby ktoś mnie naprowadził na właściwe tory ewentualnie wytknął błąd.