Liczba Giuga to taka liczba, której suma odwrotności dzielników pierwszych pomniejszona o iloczyn odwrotności dzielników wynosi 1. Przedstawiony opis można przedstawić w postaci wzoru:
Liczby Giuga została nazwane po matematyku Giuseppe Giuga i mają one związek z jego przypuszczeniami dotyczącymi pierwszości liczb.
Najmniejszą liczbą Giuga jest 30. Jej dzielnikami pierwszymi są 2, 3, 5. Wtedy ze wzoru otrzymujemy:
Pierwsze dziesięć wyrazów Giuga to: 30, 858, 1722, 66198, 2214408306, 24423128562, 432749205173838, 14737133470010574, 550843391309130318, 244197000982499715087866346, ..
Zauważmy, że każdy sumowany ułamek możemy zamienić na ułamek podwójny, gdzie mianownik to liczba n, a licznik to drugi ułamek liczba n podzielona dzielnik p. Wtedy możliwe jest zsumowanie liczników. Jeśli obie strony zostaną pomnożone przez p to otrzymujemy, że iloczyn dzielników p musi się równać sumie tych dzielników pomniejszone o 1. Dodatkowo należy pamiętać, że wtedy iloczyn dzielników musi wynosić tyle co sama liczba, ponieważ inaczej nie można byłoby odjąć 1, a pewien ułamek, który jest mniejszy o jeden. Warunki te muszą zostać sprawdzone oddzielnie!
Funkcja czyLiczbaGiuga() sprawdza czy przekazana liczba n na należy do zbioru liczb Giuga. Oto kod:
(2.) Deklaracja trzech zmiennych: t - kopia zmiennej n, suma - zmienna potrzebna do sumowania kolejnych dzielników oraz dzielnik - iloczyn dzielników. Następnie (3.) dla każdego możliwego dzielnika: (4.) jeśli aktualna wartość jest dzielnikiem to: (5.) dodaj do sumy i (6.) pomnóż przez aktualny iloczyn dzielników. Potem (7. - 9.) dziel przez i tak długo jak to możliwe, aby kolejne i też była liczbą pierwszą. Na koniec (13.) zwróć wynik porównania obu warunków.
Poniższy kod pozwala przetestować działanie napisanej funkcji. Od użytkownika wczytywany jest pewien zakres [a, b], a następnie wypisywane są wszystkie liczby Giuga w zakresie.
Istnieje jeszcze drugi sposób sprawdzenia czy liczba należy do liczb Giuga. Dla każdego dzielnika pierwszego, który dzieli sprawdzaną liczbą należy sprawdzić warunek:
Ponadto należy upewnić się, że liczba ma jakikolwiek dzielnik!
Weźmy jeszcze raz jako przykład liczbę 30. Wtedy kolejno otrzymujemy, że 2 jest dzielnikiem 14, 3 jest dzielnikiem 9, a 5 jest dzielnikiem 5. Z tego wynika, że liczba 31 jest liczbą Giuga.
Używajac wzoru podanego w teorii powyżej napisz program, który będzie sprawdzał czy liczba n jest liczbą Giuga. Przetestuj działanie programu.