Liczby Fortunatego to taka liczba naturalna m > 1 dla danej wartości n dla której p(n) + m jest liczbą pierwszą. Funkcja p(k) to iloczyn k początkowych liczb ciągu liczb pierwszych.
Liczby Fortunatego można ustawić w ciąg: 3, 5, 7, 13, 23, 17, 19, 23, 37, 61, ..
Pierwszą liczbą Fortunatego jest 3, ponieważ p(2) = 2. Dla m = 2 liczba 4 nie jest piersza, ale właśnie dla m = 3 liczba 5 jest pierwsza. Bardziej złożonym przykładem jest czwarta liczba: 13. Wtedy p(4) = 2·3·5·7 = 210. Najmniejsza liczba m wynosi wtedy 23, ponieważ 233 jest liczbą pierwszą.
Istnieje przypuszczenie, że wszystkie liczby Fortunatego są liczbami pierwszymi. Nie znaleziono do tej pory żadnej liczby złożonej będącej liczbą Fortunatego.
Napisany poniżej program ma za zadanie wypisać na ekran ciąg liczb Fortunatego.
W trakcie pisania funkcji zaistnieje potrzeba sprawdzenia czy liczba jest pierwsza. Wyjaśnienie kodu można znaleźć w artykule o liczbach pierwszych.
Zadanie polegające na szukaniu kolejnych liczb Fortunatego można rozbić na dwa etapy: szukanie iloczynu n początkowych liczb pierwszych, a potem wyszukiwanie wartości m. Funkcja getFortunate() przyjmuje jeden argument n, który określa, którą z kolei liczbę Fortunatego program ma wyliczyć.
(2.) Zainicjalizuj zmienną p, która będzie przechowywać iloczyn liczb pierwszych. (3.) W pętli znajdź n liczb pierwszych poprzez (4. - 6.) wyszukanie następnej liczby, (7.) wyliczenie iloczynu i (8.) przejście do poszukiwań następnej liczby pierwszej.
Z kolei w drugim etapie (10.) przyjmij za m najmniejszą prawidłową liczbę czyli 2. Następnie (11.) w pętli dopóki suma iloczynu oraz m nie jest pierwsza to (12.) zwiększaj m. (14.) Na koniec zwróć znalezioną wartość m.
W celu przetestowania działania napisanej funkcji można skorzystać z poniższej funkcji main(), która wypisuje na ekran pierwsze pięć liczb Fortunatego:
Napisz funkcję int listFortunate(int k), która będzie przyjmowała argument całkowitoliczbowy k i dla podanej liczby wypisze na ekran pierwsze k liczb Fortunatego posortowane rosnąco i bez powtórzeń.