Счастливое число - не "счастливый билет" :)
Счастливое число - это не то, что считали раньше на счастливых билетиках с 6-значными номерами (ныне постепенно исчезающих).
Это - вот что, то есть, находим сумму квадратов цифр числа, заменяем ей исходное число, а потом повторяем процесс, пока не останется единица (тогда число счастливое) или что-то другое (тогда не счастливое).
Например, число 67001 счастливое потому, что 62+72+12=86, а 82+62=100, которое уж точно счастливо.
Кстати, если число счастливое, то и все члены его последовательности счастливы и наоборот. Кроме того, несчастливые числа склонны зацикливаться на последовательности остатков
4, 16, 37, 58, 89, 145, 42, 20, 4 и т.д., например, для числа 128 имеем цепочку
12+22+82 = 69,
62+92 = 117,
12+12+72 = 51,
52+12 = 26,
22+62 = 40,
42+02 = 16,
12+62 = 37,
32+72 = 58,
52+82 = 89,
82+92 = 145,
12+42+52 = 42,
42+22 = 20,
22+02 = 4
и дальше всё ясно :)
Вот этот код будет выводить последовательность A007770 (счастливых чисел) нужной длины size
(или пока не зависнет браузер). Поэтому пишем числа просто старым добрым методом
document.write
, который, вообще-то, использовать не надо.
Просто мне понадобилось счастливое число побольше, чем приводится в сетевых источниках. Время выполнения кода может составить и десятки секунд при большом значении size
. Сохранить код следует как обычный файл .html
<script type="text/javascript"> function happy(number) { var m, digit ; var cycle = [] ; while (number != 1 && cycle[number] !== true) { cycle[number] = true; summ = 0; while (number > 0) { digit = number % 10 ; summ += digit * digit; number = (number - digit) / 10; } number = summ; } return (number == 1); } var number = 1, count = 0, size = 10000; //длина последовательности while (count < size) { if (happy(number)) { document.write (number + '<br>'); count++; } number++; } </script> <noscript>Извините, Javascript отключён или недоступен в вашем браузере</noscript>
Первые 10000 счастливых чисел, файл .txt в архиве .zip (24 Кб)
03.10.2017, 22:48 [2714 просмотров]