Liczby Kaprekara są podzbiorem liczby naturalnych. Ich właściwością jest fakt, że kwadrat liczby Kaprekara k można podzielić na dwie części, które po zsumowaniu wynoszą dokładnie k. Jednak prawa strona liczby nie może wynosić 0.
Przykładowo liczbą Kaprekara jest k = 55, ponieważ jest liczbą Kaprekara.
Pierwszą funkcją, która zostanie zaimplementowana pozwoli sprawdzić czy dana liczba a ma przedstawione w definicji właściwości. W rozwiązaniu biblioteka cmath nie będzie wykorzystywana.
(1.) Funkcja czyKaprekar() przyjmuje jeden argument a, który określa liczbę do sprawdzenia, a wynikiem jest wartość logiczna czy a jest liczbą Kaprekara. (2.) Wyliczenie kwadratu liczby a. (3.) Zmienna mn pozwoli wybierać odpowiednie fragmenty liczby. (4.) Dla każdego możliwego podziału liczby: (5.) policz sumą obu części i (6.) jeśli są równej liczbie podanej w argumencie to (7.) zwróć, że jest to liczba Kaprekara. (9.) Jeśli w danym kroku równość nie zaszła to pomnóż mn o 10. (11.) Po zakończeniu pętli, o ile nie została wcześniej zwrócona prawda, zostanie zwrócony fałsz.
W trakcie sprawdzania została wykorzystana funkcja policzCyfry(), która potrafi policzyć z ilu cyfr składa się przekazana do funkcji liczba:
Funkcję sprawdzająca czy dana liczba jest liczbą Kaprekara można napisać bez funkcji zliczającej ile cyfr ma dana liczba. Pozwala na to fakt, że jeśli lewa strona liczby osiągnie 0 to nie ma sensu sprawdzanie dalszych podziałów, ponieważ lewa strona już zawsze będzie 0. Należy jednak pamiętać, że istnieje przypadek k = 1, gdzie .
(1.) Nagłówek funkcji pozostaje niezmieniony. (2.) Wyliczenie kwadratu liczby a i (3.) ustalenie mnożnika mn. (4.) Dopóki lewa strona w poprzedniej iteracji nie była zerowa to (5.) sprawdź czy podczas tego podziału można stwierdzić czy liczba jest liczbą Kaprekara. Jeśli tak to (6.) zwróć prawdę. W przeciwnym wypadku (8.) zwiększ mnożnik mn. Tak samo jak w poprzedniej wersji funkcji jeśli pętla zostanie zakończona to należy (10.) zwrócić fałsz.
W celu wypisania wszystkich liczb Kaprekara z zakresu [1, 10000] można posłużyć się następującą funkcją main():
Napisz program, który po wczytaniu liczby k od użytkownika stwierdzi czy dana liczba jest liczbą Kaprekara. W przypadku, gdy liczba taką nie jest powinien zostać wyświetlony komunikat "To nie jest liczba Kaprekara". W przeciwnym wypadku program powinien wypisać, która z kolei jest dana liczba Kaprekara. Przykładowo liczba 45 jest 3 liczbą Kaprekara.