Trzy niezależne podpunkty na tym samym pliku. Najciekawszy jest ostatni — prowadzi do liczby 6174, i nie jest to przypadek.
Arkusz CKE — grudzień 2024, test diagnostyczny, rozszerzony
Zadanie 3.1 — kwadraty liczb całkowitych
Liczba jest kwadratem, jeśli jej pierwiastek całkowity podniesiony do kwadratu daje ją z powrotem.
import math
def jest_kwadratem(n):
r = math.isqrt(n)
return r * r == n
Kontrola na liczby_przyklad.txt: 2 kwadraty, pierwszy 9801
Odpowiedź dla liczby.txt: 20 kwadratów, pierwszy 4489
Zadanie 3.2 — co najmniej 5 różnych czynników pierwszych
def liczba_roznych_pierwszych(n):
c = 0
d = 2
while d * d <= n:
if n % d == 0:
c += 1
while n % d == 0: # wyrzuć cały ten czynnik
n //= d
d += 1
if n > 1: # został duży czynnik pierwszy
c += 1
return c
Kontrola na liczby_przyklad.txt: jedna taka liczba, 2730
Odpowiedź dla liczby.txt:
2730, 8190, 2310, 4620, 7770, 8610, 4830, 4290, 6930, 6630
Najmniejsza czterocyfrowa liczba z pięcioma różnymi czynnikami pierwszymi to 2730 = 2·3·5·7·13, czyli iloczyn pięciu najmniejszych liczb pierwszych. Pięć różnych czynników to sporo jak na cztery cyfry — stąd tak krótka lista.
Zadanie 3.3 — rutyna Kaprekara
Z cyfr liczby układasz największą i najmniejszą możliwą liczbę (zera traktujesz jak każdą inną cyfrę) i odejmujesz.
def roznica_kaprekara(n):
cyfry = f"{n:04d}"
najw = int("".join(sorted(cyfry, reverse=True)))
najm = int("".join(sorted(cyfry)))
return najw - najm
Dla 3151: 5311 − 1135 = 4176. Dla 2047: 7420 − 0247 = 7173.
Kontrola na liczby_przyklad.txt: 8 mniejszych, 12 większych, 0 równych
Odpowiedź dla liczby.txt: 947 mniejszych, 1052 większych, 1 równa — i tą równą jest 6174
Dlaczego akurat 6174
To stała Kaprekara. Weź dowolną liczbę czterocyfrową, której cyfry nie są wszystkie takie same, i powtarzaj tę samą operację. Po najwyżej siedmiu krokach zawsze wylądujesz na 6174 i tam utkniesz, bo 7641 − 1467 = 6174 w kółko.
Odkrył to indyjski matematyk D.R. Kaprekar w 1949 roku. 6174 jest jedyną czterocyfrową liczbą będącą swoim własnym wynikiem — dlatego w całym pliku „równa" może być tylko ona.
Gdzie tracisz punkty
sqrtzamiastisqrtw 3.1.sqrtzwracafloat, a porównywanie liczb zmiennoprzecinkowych przy większych wartościach potrafi spłatać figla.isqrtliczy na intach i nie kłamie.- Zapomniany duży czynnik w 3.2. Po pętli może zostać
n > 1— to jest czynnik pierwszy większy od pierwiastka i trzeba go doliczyć. - Brak wiodących zer w 3.3.
f"{n:04d}"jest tu istotne. Bez tego liczba w rodzaju2047zgubi zero przy układaniu najmniejszej. - Niewyrzucenie całego czynnika. Wewnętrzna pętla
while n % d == 0musi wyrzucić wszystkie kopie dzielnika, inaczej policzysz go kilka razy.
Ten sam wzorzec w innych arkuszach
Rozbiór liczby na cyfry i klasyka „liczb" — dzielniki, NWD, liczby pierwsze — wracają w niemal każdym arkuszu:
- maj 2026, zad. 2 — przeniesienia — cyfry przez
% 10i// 10 - maj 2024, zad. 2 — Cyfry — podmiana cyfra po cyfrze
- maj 2025, zad. 3 — Dron — algorytm Euklidesa i liczby względnie pierwsze
Z tego samego arkusza: zad. 1 (pozycje jedynek).
Nazwisko Kaprekara wraca w arkuszach więcej niż raz, w różnych przebraniach. To dobry przykład tego, jak bardzo te zadania się powtarzają — cała mapa w Variancie.


