Wpis z mikrobloga

#cpp #techbaza
Mam do napisania program do wyszukiwania liczb pierwszych(sito eratostenesa) za pomocą listy jednokierunkowej (w której jest wartość liczby i jej status) - o ile samo tworzenie listy, jak i sama implementacja sita np. na tablicach mi wychodzi, to połączenie tego już nie ( ͡° ʖ̯ ͡°)
Tzn. mój program dobrze tworzy liste, ale podczas algorytmu sita zmienia wartosc statusu na false tylko dla pierwszej polowy liczb (48 linijka kodu)
https://pastebin.com/K3enQ3cL

Mogę kogoś prosić o pomoc? Już siedzę na tym kilka godzin, zmieniam implementację listy, algorytmu i nic

W ramach wdzięczności za rozwiązanie problemu wyślę "przysłowiowy" napiwek
( ͡° ͜ʖ ͡°)

Jeśli to pomocne to korzystałem głownie z 2 stron:
listy: http://jfiszbach.republika.pl/programowanie/cplusplus/files/dynam_lista_jednokier.html
sito: http://eff10.internetdsl.tpnet.pl/programowanie/primes/pages/02.htm
  • 7
@beliver: jeden ekstra może nie wystarczyć ;-) w sicie z grubsza poruszasz się "dwutorowo":
iteruje od 2 do sqrt(n):
- jeżeli obecny element "i" jest "true"? ustaw wszystkie jego wielokrotności na "false" (od i*2, do n; ale nie modyfikuj i)
- w przeciwnym wypadku, przejdź dalej (tak naprawdę: i++), trafiłeś na wielokrotność liczby pierwszej

polecam rozpisać na kartce liczby 1-50 i próbować zakreślać tak jak iteracje powinny iść, np.: zaczynam od
@beliver: już prawie dobrze, tylko trochę warunek wykluczenia liczby:

// 51-54 inicjalizuja wsk2=wsk, j=i*2, i fora, poniżej następne:
if(j%i==0){ // w peirwszej iteracji ustawiasz j na wielokrotność i => ten warunek będzie prawdziwy
wsk2=wsk2->next; // wsk2 było dopiero co przypisane wsk => warunek sprawdzałeś dla j, a zmieniasz i
wsk2->status=false;