Liczby pierwsze
Ostatnio zmodyfikowano 2016-03-05 10:05
kacper966 Temat założony przez niniejszego użytkownika |
Liczby pierwsze » 2016-03-01 15:09:00 Witam, chciałem napisać program, który wypisywałby wszystkie liczby pierwsze mniejsze od podanej liczby. Niestety program wypisuje tylko pierwszą napotkaną liczbę pierwszą, czyli np jak podam 15 to wypisze 13 i się zakończy. Czy mógłby mi ktoś powiedzieć gdzie mam błąd? Kod programu: #include <iostream>
using namespace std;
int main() { int n; cin >> n; int licznik = n; int licznik1 = n - 1; while( licznik != 1 ) { while( licznik % licznik1 != 0 ) { licznik1--; if( licznik1 == 1 ) { cout << licznik << endl; } } licznik--; } return 0; }
|
|
Rashmistrz |
» 2016-03-01 16:05:45 Pierwszy błąd jaki zauważyłem, to to, że nie przywracasz licznika1 po zakończeniu wewnętrznej pętli. while( licznik % licznik1 != 0 ) . Aktualnie po zakończeniu tej pętli licznik1 ma wciąż wartość 1, więc nigdy więcej nie wchodzi do tej pętli, a dalej dekrementuje się licznik. Przypominam też, że 2 też jest liczbą pierwszą. (Pokombinuj z zamianą wewnętrznej pętli na pętlę DO ... WHILE) Właściwie możesz zacząć sprawdzać dzielniki danej liczby od pierwiastka z niej. Jak zrobisz wszystko, wstaw kod i podziękuj. Podziękowania sprawiają, że czuję się potrzebny. To bardzo podnosi mnie na duchu. C: |
|
kacper966 Temat założony przez niniejszego użytkownika |
» 2016-03-01 16:32:01 Teraz wszytsko działa :) Dziękuję za pomoc :) #include <iostream>
using namespace std;
int main() { int n; cin >> n; int licznik = n; int licznik1 = n - 1; while( licznik != 1 ) { while( licznik % licznik1 != 0 ) { licznik1--; if( licznik1 == 1 ) { cout << licznik << endl; } } licznik--; licznik1 = licznik - 1; if( licznik == 2 ) { cout << licznik << endl; } } return 0; }
|
|
C-Objective |
» 2016-03-05 10:05:50 Niemógłbyś użyć sita? Przy większych liczbach komputer te liczby naprawdeeee wolno liczy ;p |
|
« 1 » |