Liczby gładka jest nazywana K-gładką jeśli wszystkie jej dzielniki pierwsze są nie większe niż K i należy do zbioru liczb naturalnych.
W przypadku sprawdzania stopnia K gładkości wybranej liczby a można rozłożyć liczbę na czynniki pierwszą. Szukany stopień K to oczywiście największa liczba w rozkładzie. Na tej podstawie można wywnioskować, że stopień K liczby gładkiej jest zawsze liczbą pierwszą. W tabelce zostały przedstawione przykładowe liczby oraz wyliczony ich stopień:
Liczba | Rozkład | Stopień K |
---|---|---|
70 | 2 * 5 * 7 | 7 |
60 | 2 * 2 * 3 * 5 | 5-gładka |
7919 | 7919 | 7919-gładka |
Do implementacji przyda się znajomość na temat liczb pierwszych. Liczb pierwszych dzielących dana liczbę a należy szukać w zakresie [2, a/2]. W celu uniknięcia sprawdzania czy liczba, którą chcemy dzielić jest pierwsza warto usunąć wszystkie wielokrotności poprzedni znalezionej liczby pierwszej tj. najpierw dzielić liczbę przez 2 dopóki jest możliwe, potem 3, 3 itd. Jeśli nie zostanie znaleziona żadna liczba w zakresie, która dzieli a to K = a.
(1.) Program przyjmuje liczbę naturalną a, a wynikiem działania funkcji będzie stopień gładkości K. (2.) Utworzenie kopii liczby a, którą będzie można modyfikować. (3.) Dla każdej liczby z zakresu [2, a/2] (4.) o ile liczba i dzieli a_kopia to (5.) dzieli liczbę a_kopia przez i. (6.) Jeśli po dzieleniu a_kopia wynosi jeden to znaczy, że rozkład został zakończony, a (7.) największą dzielącą liczbą pierwszą jest i. (9.) Jeśli pętla zostanie zakończona, ale nie zostanie znaleziony żaden dzielnik to znaczy, że liczba jest pierwsza, dlatego należy wtedy zwrócić wartość a.
Najprostszy program, który wczyta od użytkownika liczbę i wypisze na ekran K-gładkość wygląda tak:
Jeśli wypisać kolejny liczby K-gładkie można zauważyć, że wszystkie są wielokrotnościami liczby K. Jednak z tego zbioru wypadają liczby, które są postaci Kq, gdzie q to liczba pierwsza większa od K.
Przykładowo dla danych:
program powinien wypisać: