C++ wyświetlenie n-tej liczby pierwszej

0

Witam, mam pewien problem, otóż mam za zadanie zrobić program, który będzie wyświetlać n-tą (podaną przez użytkownika z klawiatury) liczbę pierwszą. Napisałem taki oto kod, lecz nie mam pojęcia dlaczego nie wyświetla tak jak powinien.

 
#include <iostream>
using namespace std;

int prime(int k) {
    int dzielnik=2;
    int i=0;
    while(i<k)
        {
            while (k%dzielnik != 0)
            {
                dzielnik++;
            }
            i++;
        }
return 0;

}


int main() {
    int k;
    cout<<"Podaj ktora liczbe pierwsza wyswietlic: ";
    cin>>k;
    cout<<"Jest to liczba: "<<prime(k)<<endl;
    return 0;
}


1

A ja nie mam pojęcia dlaczego oczekujesz, że ten program wyświetli coś innego niż 0? Przecież funkcja prime zwraca zawsze 0.

0

No tak racja, mój błąd. Jednak za bardzo nie mam pojęcia jak to zrobić aby ten program działał.

0

A za pomocą długopisu i kartki możesz powiedzieć jaka będzie powiedzmy 6-ta liczba pierwsza?

1

Są co najmniej dwa podejścia:

  • w pętli sprawdzasz czy kolejne liczby (2,3,4...) są pierwsze aż do napotkania n-tej liczby pierwszej,
  • rozwiązujesz, w sposób przybliżony, równanie k/ln(k) = n i tworzysz sito Erastotenesa dla zakresu [2,k]. Przy dużym n, ten sposób jest dużo bardziej wydajny.

1 użytkowników online, w tym zalogowanych: 0, gości: 1