Pchełki Python: 15999

https://xpil.eu/cy2

Bierzemy liczbę naturalną, następnie każdą jej cyfrę podnosimy do kwadratu, kwadraty sumujemy, wynik sumowania poddajemy tej samej operacji i tak do oporu. Co wyjdzie na końcu? I w ogóle to na jakim "końcu", przecież może się toto rozjedzie w nieskończoność? Czemu taki dziwny tytuł wpisu jest? O sssso chozzzi?

Okazuje się, że od jakiej liczby byśmy nie zaczęli (mogą nawet być lemowe centygigaheptatrybilionardy), zawsze zejdziemy albo do jedynki, albo do czwórki. Przy czym jedynka się zapętla sama na sobie, a czwórka daje pętlę ośmioelementową 4 => 16 => 37 => 58 => 89 => 145 => 42 => 20 => 4

Wygląda znajomo?

No bo już kiedyś o tym pisałem 😉 Tylko że wtedy podany kod był napisany w Powershell, a dziś pokażę jak to samo uzyskać w Pythonie:

def suma_kwadratow_cyfr(n):
    return sum(int(cyfra)**2 for cyfra in str(n))


def iteracje(n):
    i = 0
    while(not n in (1, 4)):
        i += 1
        n = suma_kwadratow_cyfr(n)
    return(i)


maksiter = -1
for n in range(1, 1000000):
    iter = iteracje(n)
    if(iter > maksiter):
        print(n, iter)
        maksiter = iter

Wynik:

1 0
2 1
3 11
6 13
88 14
269 15
15999 16

Dzisiejszy temat (w tym również część kodu w Pythonie) zerżnąłem bezwstydnie od jednego z moich ulubionych blogerów: https://www.johndcook.com/blog/2020/02/28/sum-of-squared-digits/ - w wolnym czasie zapraszam do zapoznania się z innymi jego materiałami, facet pisze całkiem ciekawie i bardzo, bardzo konkretnie.

https://xpil.eu/cy2

Leave a Comment

Komentarze mile widziane.

Jeżeli chcesz do komentarza wstawić kod, użyj składni:
[code]
tutaj wstaw swój kod
[/code]

Jeżeli zrobisz literówkę lub zmienisz zdanie, możesz edytować komentarz po jego zatwierdzeniu.