Din cate vezi si in sursa zice :
//(p[i>>3]&(1<<(i&7))) == 0 if 2*i + 1 is prime
Deci, toate numerele prime din vector indeplinesc conditia aia (mai putin 2, care e singurul numar par si prim, care e luat separat). In ultimul for se numara toate numerele prime. Ca sa le afisezi poti adauga un
printf("%d\n", i*2+1); alaturi de
nr++; . Bineinteles, pe 2 il afisezi separat
Legat de "diferentele" Java/C++, cred ca nu reprezinta un impediment pentru cei care lucreaza in C :
i+=1 exista si in C++, a fost pus acolo pentru mai multa claritate, daca te uiti mai sus o sa vezi si
i+=2. Si pentru a compila functia asa cum e ea, cred ca nu ai nevoie de niciun header. Daca mai bagi si afisare, incluzi si cstdio sau stdio.h sau ce crezi ca mai ai nevoie... Si faptul ca functia este "public" tine de Java, in C++ scrii fara "public"
(daca nu o bagi in vreo clasa)