Šťastná čísla

O(n · k)

Šťastné číslo se opakovaně nahrazuje součtem čtverců číslic, dokud nedosáhne 1; nešťastné číslo upadne do cyklu 4→16→37→58→89→145→42→20→4. Sekvenci zpopularizoval Reg Allenby a systematicky byla studována v 90. letech. Tento vizualizér kontroluje každé m v 2..n samostatně, šťastná čísla barví zeleně a nešťastná hnědě. Mezi známá šťastná čísla patří 7, 13, 19, 23 a 28.

Čísla
Uprav vstup a stiskni Přehrát

Jak to funguje

  1. Inicializace všech čísel jako kandidátů
  2. Pro každé m iteruj součet čtverců číslic dokud nedosáhneš 1 nebo cyklu
  3. Šťastná čísla zeleně, nešťastná hnědě
  4. Výpis celkového počtu šťastných čísel

Pseudokód

1isHappy(m):                         # O(k) per number2  seen = {}3  while m != 1 and m not in seen:4    seen.add(m)5    m = sum(d^2 for d in digits(m))6  return m == 178happyNumbers(n):9  for m = 2 to n:10    label[m] = "happy" if isHappy(m) else "unhappy"