Słaba hipoteza Goldbacha to przypuszczenie w teorii liczb, które mówi, że każda liczba naturalna nieparzysta i większa od 7 jest sumą trzech nieparzystych liczb pierwszych (niekoniecznie różnych).
Przykładowo liczbę 9 można zapisać jako sumę 5, 3 oraz 1. Innym przykładem jest liczba 23, którą można zapisać jako sumę 11 + 7 + 5.
Zadanie polega na napisaniu programu, który dla wszystkich liczb nieparzystych z podanego przedziału [a, b]. Po znalezieniu odpowiedniej trójki liczb pierwszych program powinien wypisać sumę na ekran. Przykładowo dla przedziału [9, 13] program powinien wypisać:
W celu ograniczenia wykonywanych obliczeń warto przyjąć, że każda kolejna znaleziona liczba pierwsza jest większa lub równa poprzedniej znalezionej.
Poniższy kod pozwala sprawdzić czy przekazana liczba a jest liczbą pierwszą. Jego wyjaśnienie można znaleźć w tym artykule.
Poniższy kod dla podanej liczby a szuka trzech liczb pierwszych, które w sumie dają a. W przypadku nie znalezienia lub w przypadku niespełnienia warunków przypuszczenia funkcja zwróci fałsz. W przeciwnym wypadku prawdę.
(2.) Jeśli nie są spełnione warunki dotyczące liczby a to (3.) wykonywanie funkcji zostanie przerwane. W przeciwnym wypadku (4.) można przejść do szukania trójki liczb pierwszych. Pierwsza liczba w sumie jest sprawdzana dla każdej liczby z przedziału [2, a - 4), ponieważ 4 to najmniejsza suma pozostałych dwóch liczb pierwszych. (5.) Pod warunkiem, że przyjęta pierwsza liczba j to (6.) należy poszukiwania drugiej liczby pierwsze z przedziału [j, a - j - i], ponieważ każda następna liczba ma być większa lub równa.
(7.) Trójka zostanie znaleziona jeśli liczbą pierwszą jest wyznaczona liczba i oraz liczba a - j - i. Wtedy można (8. - 9.) wypisać rozkład i (10.) zwrócić, że rozkład został znaleziony.
Do wypisywania rozkładu liczb nieparzystych z przedziału [zakrL, zakrP] można wykorzystać funkcję czySlabyGoldbachRozklady().
Przykładowe wywołanie funkcji, aby wypisać rozkłady z przedziału [9, 13] wygląda następująco:
Napis program do wyszukiwania rozkładu liczby Goldbacha, który wypisze wszystkie możliwe rozkłady danej liczby nieparzystej. Każda wypisana trójka powinna być unikalna, a nie permutacją jednej z wcześniej wymienionych.
Przykładowo dla liczby 13 program powinien wypisać