Laboratorium 10a: Liczby autobusowe kwadratowe

Wprowadzenie

Hugo Steinhaus we Wrocławiu jeździł z domu przy ul. Orłowskiego 15 na Biskupinie do Instytutu Matematycznego przy pl. Grunwaldzkim autobusem 145.

Analizując własności liczby 145, odkrył liczby zwane dziś jego nazwiskiem lub liczbami autobusowymi kwadratowymi. Kiedy napiszemy dowolną liczbę naturalną w systemie dziesiętnym i obliczmy sumę kwadratów cyfr tej liczby, a następnie z otrzymaną liczbą zrobimy to samo i będziemy w ten sposób postępować dalej, to jeżeli ten proces nie doprowadzi do jedynki (po czym jedynka będzie się już stale powtarzać), to doprowadzi na pewno do liczby 145, po czym wystąpi ciąg 145, 42, 20, 4, 16, 37, 58, 89, który będzie się powtarzać.

Zadanie

  1. Napisać funkcję, która dla dowolnej liczby całkowitej oblicza sumę kwadratów jej cyfr.

    Hint: Aby wydobyć ostatnią cyfrę ($y$) z liczby $x$ należy wykonać operację $y=\operatorname{mod}(x,10)$. Operator % to w języku C modulo (reszta z dzielenia).

  2. Zadaniem jest sprawdzić czy to rzeczywiście prawda, czyli…

  3. Napisać program, który będzie powtarzał powyższą procedurę tak długo, aż:

    • albo dojdzie do liczby 11;
    • albo doprowadzi do sytuacji „pętlenia się obliczeń” mniej trywialnego niż w przypadku 1.

Potencjalne problemy

  1. Nie bardzo wiadomo ile trzeba będzie wykonać operacji żeby dojść do początku „pętli” (a „pętlę” poznamy po tym, że dojdziemy do liczby, która już była). Trzeba zastosować tablice dynamiczne?

  1. Gdy wystartujemy z jedynki program nie wygeneruje żadnych innych wartości. ↩︎

Poprzedni
Następny