Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Stroustrup "Programowanie.[...]" - zadanie "Sieve of Eratosthenes"

Ostatnio zmodyfikowano 2023-09-21 17:11
Autor Wiadomość
JollyJ
Temat założony przez niniejszego użytkownika
Stroustrup "Programowanie.[...]" - zadanie "Sieve of Eratosthenes"
» 2023-09-20 15:56:06
Cześć! :)

Przerabiam podręcznik "Programming. Principles and Practice Using C++" autorstwa Bjarne Stroustrup. W rozdziale czwartym zamieszczono następujące zadanie:

"13. Create a program to find all the prime numbers between 1 and 100. There is a classic method for doing this, called the "Sieve of Eratosthenes." If you don't know that method, get on the web and look it up. Write your program using this method."

Proszę o sprawdzenie mojego kodu, ponieważ output nie jest do końca poprawny.
C/C++
int main()
{
   
vector < int > primes;
   
   
int number = 2; // numbers from 2 to 100
   
while( number <= 100 ) {
       
primes.push_back( number );
       
++number;
   
}
   
int position = 0; // position of the number in the vector
   
while( position < primes.size() ) {
       
int i = 2; // number to multiply with a vector element
       
while( primes[ position ] * i <= 100 ) {
           
remove( primes.begin(), primes.end(), primes[ position ] * i );
           
++i;
       
}
       
++position;
   
}
   
position = 0;
   
while( position < primes.size() ) {
       
cout << primes[ position ] << '\n';
       
++position;
   
}
}
Output:
2
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
Z góry dzięki za pomoc. :)
P-180385
pekfos
» 2023-09-20 16:56:26
std::remove() nie ma sposobu żeby elementy faktycznie usunąć. Ten algorytm nie powinien w ogóle tak wyglądać.
P-180386
JollyJ
Temat założony przez niniejszego użytkownika
» 2023-09-20 23:29:32
Dziękuję.
Czy ktoś mógłby mnie naprowadzić, jak wykonać to zadanie?
Szukałam rozwiązań w Internecie, ale bazują one na konceptach, które nie zostały jeszcze wprowadzone w podręczniku. Póki co poznałam jedynie pętle while i for, iteracje z if i switch i wektory.
P-180387
pekfos
» 2023-09-21 17:11:36
Jakie koncepty? To zwykle jest for, if i tablica. https://en.wikipedia.org/wiki/Sieve_of_Eratosthenes#Pseudocode
P-180388
« 1 »
  Strona 1 z 1