Liczba Odkryta n to taka liczba naturalna, która jest podzielna przez każdą cyfrę z której się składa. Podczas poszukiwania takich liczb należy pominąć wszystkie cyfry, które zawierają 0.
Liczbą Odkrytą jest 24, ponieważ 24 dzieli się przez 2 oraz 4. Oczywistym przypadkiem są liczby o k cyfrach, gdy każda z cyfr jest taka sama. Tego typu liczba jest zawsze Odkryta. Przypuścmy, że mamy liczbę n = cccc..c o k cyfrach c wtedy wystarczy sprawdzić tylko czy liczba dzieli się przez c, a jest to prawdą, ponieważ n/c = 1111..1.
Z kolei przykładem liczby nieodkrytej jest 26, która dzieli się przez 2, ale nie przez 6. Liczbami Odkrytymi z pewnością nie są liczby nieparzyste, które mają w sobie parzystą cyfrę. Przykładem takich liczb jest np. 21, 23, 25 itd. Należy jednak pamiętać, że możliwe jest, aby liczba Odkryta składała się z cyfr parzystych i nieparzystych.
Liczby Odkryte można ustawić w następujący ciąg: 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 15, 22, 24, 33, ..
Zadanie polega na napisaniu funkcji czyOdkryta(), która dla podanej liczby całkowitej a program zwróci wartość logiczną czy dana liczba należy do zbioru liczb Odkrytych. Program powinien zostać przetestowany.
W celu sprawdzenia czy liczba jest Odkryta potrzebna jest pętla, która pozwoli pobrać kolejne jej cyfry. Jeden ze sposobów polega na skopiowaniu wartości liczby do oddzielnej zmiennej, a następnie pobierać z niej kolejną cyfrę operacją modulo i usuwać ostatnią cyfrę poprzez dzielenie całkowitoliczbowe. W przypadku natrafienia cyfry, która nie dzieli można od razu zwrócić błąd.
Poniżej została przedstawiona przykładowa implementacja funkcji czyOdkryta().
W celu przetestowania napisanej funkcji może skorzystać z poniższego kodu programu.
Napisz funkcję czyOdkryta(), która pozwoli sprawdzić czy liczba jest odkryta w pewnym systemie b. Zakładamy, że wartość b będzie miała wartość z zbioru {2, 3, .., 16}. Przetestuj działanie napisanego programu.
Przykładowo liczba 99 przeliczona na różne systemy to:
System | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Wartość | 11111111 | 100110 | 3333 | 2010 | 1103 | 513 | 377 | 313 | 255 | 212 | 193 | 168 | 143 | 120 | FF |
Czy Odkryta? | Tak | Nie | Tak | Nie | Nie | Tak | Nie | Tak | Nie | Nie | Nie | Nie | Nie | Nie | Tak |