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

Liczby pierwsze

Ostatnio zmodyfikowano 2016-03-05 10:05
Autor Wiadomość
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:

C/C++
#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;
}
P-145448
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:
P-145450
kacper966
Temat założony przez niniejszego użytkownika
» 2016-03-01 16:32:01
Teraz wszytsko działa :)
Dziękuję za pomoc :)

C/C++
#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;
}
P-145453
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
P-145570
« 1 »
  Strona 1 z 1