Давайте определим последовательность целочисленных квадратных корней. Сначала a (1) = 1. Затем a (n) - наименьшее положительное целое число, не виденное ранее, такое, что
sqrt(a(n) + sqrt(a(n-1) + sqrt(... + sqrt(a(1)))))
является целым числом Несколько примеров:
a (2) равно 3, потому что это наименьшее целое число, такое sqrt(a(2) + sqrt(a(1))) = sqrt(a(2) + 1)
как целое число, а 3 ранее не встречалось в последовательности.
a (3) равно 2, потому что это наименьшее целое число, такое sqrt(a(3) + sqrt(a(2) + sqrt(a(1)))) = sqrt(a(3) + 2)
как целое число, а 2 ранее не встречалось в последовательности.
a (4) равно 7, потому что sqrt(a(4) + 2)
является целым числом. Мы не могли иметь (4) = 2, потому что 2 уже произошло в нашей последовательности.
Напишите программу или функцию, для которой задан параметр n, который возвращает последовательность чисел от a (1) до a (n).
Последовательность начинается с 1,3,2,7,6,13,5, ....
Источник этой последовательности от этого Math.SE вопроса .
Участок первых 1000 элементов в последовательности:
Ответы:
Python 2 , 80 байт
Попробуйте онлайн!
источник
Haskell ,
10387 байтУжасно неэффективно, но не полагается на арифметику с плавающей запятой. Вот
a(x) = sqrt(f(x)+a(x-1))
вспомогательная последовательность, которая упрощает вычисления.Попробуйте онлайн!
источник
Python 2 , 87 байт
Попробуйте онлайн!
-3 спасибо мистеру Xcoder .
-5 благодаря овс .
источник
while n in s or(t+n)**.5%1>0
->while(n in s)+(t+n)**.5%1
MATL ,
3027 байтПопробуйте онлайн! Или посмотрите графическое отображение (занимает некоторое время; время ожидания для входов превышает приблизительно
60
).объяснение
источник
Mathematica, 104 байта
Попробуйте онлайн!
Последовательность квадратных корней также очень интересна ...
и выводит аналогичную схему
также вот различия основной последовательности
источник
Python 2 ,
1171151121029987 байтПопробуйте онлайн!
Использовал
t=(t+x)**.5
логику из ответа Эрикаисточник
JavaScript (ES7),
89827776 байтдемонстрация
Показать фрагмент кода
Отформатировано и прокомментировано
источник
R ,
13810599 байтПопробуйте онлайн!
-33 байта, используя хитрый
sqrt()%%1
трюк Тфельда в цикле while-6 байт, используя T вместо F
оригинальный ответ, 138 байт:
Попробуйте онлайн!
источник
Шелуха , 21 байт
Попробуйте онлайн!
Как?
источник