Zdefiniujmy sekwencję całkowitych pierwiastków kwadratowych. Po pierwsze, (1) = 1. Następnie, (n) jest dodatnią liczbą całkowitą najmniejszą nie widziano w taki sposób,
sqrt(a(n) + sqrt(a(n-1) + sqrt(... + sqrt(a(1)))))
jest liczbą całkowitą. Kilka przykładów:
a (2) wynosi 3, ponieważ jest to najmniejsza liczba całkowita, taka jak sqrt(a(2) + sqrt(a(1))) = sqrt(a(2) + 1)
liczba całkowita, a 3 nie występowało wcześniej w sekwencji.
a (3) to 2, ponieważ jest to najmniejsza liczba całkowita, sqrt(a(3) + sqrt(a(2) + sqrt(a(1)))) = sqrt(a(3) + 2)
czyli liczba całkowita, a 2 nie występowało wcześniej w sekwencji.
a (4) wynosi 7, ponieważ sqrt(a(4) + 2)
jest liczbą całkowitą. Nie mogliśmy mieć (4) = 2, ponieważ 2 już wystąpiły w naszej sekwencji.
Napisz program lub funkcję, która podając parametr n zwraca ciąg liczb od a (1) do a (n).
Sekwencja rozpoczyna się 1,3,2,7,6,13,5, ....
Źródłem tej sekwencji jest z tym pytaniem Math.SE .
Wykres pierwszych 1000 elementów w sekwencji:
Odpowiedzi:
Python 2 , 80 bajtów
Wypróbuj online!
źródło
Haskell ,
10387 bajtówStrasznie nieefektywny, ale nie opiera się na arytmetyki zmiennoprzecinkowej. Oto
a(x) = sqrt(f(x)+a(x-1))
sekwencja pomocnicza, która upraszcza obliczenia.Wypróbuj online!
źródło
Python 2 , 87 bajtów
Wypróbuj online!
-3 dzięki Mr. Xcoder .
-5 dzięki ovs .
źródło
while n in s or(t+n)**.5%1>0
->while(n in s)+(t+n)**.5%1
MATL ,
3027 bajtówWypróbuj online! Lub zobacz wyświetlacz graficzny (zajmuje trochę czasu; czasy przekroczenia w przybliżeniu danych wejściowych
60
).Wyjaśnienie
źródło
Mathematica, 104 bajty
Wypróbuj online!
Kolejność pierwiastków kwadratowych jest również bardzo interesująca ...
i daje podobny wzór
także tutaj są różnice w głównej sekwencji
źródło
Python 2 ,
1171151121029987 bajtówWypróbuj online!
Wykorzystał
t=(t+x)**.5
logikę z odpowiedzi Erikaźródło
JavaScript (ES7),
89827776 bajtówPróbny
Pokaż fragment kodu
Sformatowane i skomentowane
źródło
R ,
13810599 bajtówWypróbuj online!
-33 bajtów za pomocą sprytnej
sqrt()%%1
sztuczki Tfeldta w pętli while-6 bajtów przy użyciu T zamiast F.
oryginalna odpowiedź, 138 bajtów:
Wypróbuj online!
źródło
Łuska , 21 bajtów
Wypróbuj online!
W jaki sposób?
źródło