@@ -123,18 +123,219 @@ <h2>📝 Editor</h2>
123123const clamp = ( v , mn , mx ) => Math . max ( mn , Math . min ( mx , v ) ) ;
124124const clip_min = ( x ) => Math . min ( x , 0 ) ;
125125const clip_max = ( x ) => Math . max ( x , 0 ) ;
126+ function gcd ( a , b ) {
127+ while ( b ) {
128+ [ a , b ] = [ b , a % b ] ;
129+ }
130+ return a ;
131+ }
126132function primes ( n ) {
127- const result = [ ] ;
133+ const seq = [ ] ;
128134 for ( let i = 2 ; i <= n ; i ++ ) {
129135 let isPrime = true ;
130136 for ( let j = 2 ; j * j <= i ; j ++ ) {
131137 if ( i % j === 0 ) { isPrime = false ; break ; }
132138 }
133- if ( isPrime ) result . push ( i ) ;
139+ if ( isPrime ) { seq . push ( i ) ; }
140+ }
141+ return seq ;
142+ }
143+
144+ function factorial ( n ) {
145+ if ( n <= 0 ) return [ ] ;
146+ const seq = [ 1 ] ;
147+ for ( let i = 2 ; i <= n ; i ++ ) {
148+ seq . push ( seq [ seq . length - 1 ] * i ) ;
149+ }
150+ return seq ;
151+ }
152+
153+ function fib ( n ) {
154+ if ( n <= 0 ) return [ ] ;
155+ if ( n === 1 ) return [ 0 ] ;
156+ const seq = [ 0 , 1 ] ;
157+ for ( let i = 2 ; i < n ; i ++ ) {
158+ seq . push ( seq [ i - 1 ] + seq [ i - 2 ] ) ;
159+ }
160+ return seq ;
161+ }
162+
163+ function mersenne ( n ) {
164+ const seq = [ ] ;
165+ for ( let i = 1 ; i <= n ; i ++ ) {
166+ seq . push ( Math . pow ( 2 , i ) - 1 ) ;
167+ }
168+ return seq ;
169+ }
170+
171+ function geometric ( start , ratio , count ) {
172+ const seq = [ ] ;
173+ for ( let i = 0 ; i < count ; i ++ ) {
174+ seq . push ( Math . pow ( ratio , i ) * start ) ;
175+ }
176+ return seq ;
177+ }
178+
179+ function arithmetic ( start , diff , count ) {
180+ const seq = [ ] ;
181+ for ( let i = 0 ; i < count ; i ++ ) {
182+ seq . push ( start + i * diff ) ;
183+ }
184+ return seq ;
185+ }
186+
187+ function primePolynomial ( n , coff1 , coff2 , coff3 ) { /// 11, 17, 41
188+ const seq = [ ] ;
189+ for ( let i = 0 ; i <= n ; i ++ ) {
190+ seq . push ( coff1 * i * i + coff2 * i + coff3 ) ;
191+ }
192+ return seq ;
193+ }
194+
195+ function catalan ( n ) {
196+ if ( n <= 0 ) return [ ] ;
197+ const seq = [ 1 ] ;
198+ for ( let i = 1 ; i < n ; i ++ ) {
199+ seq . push ( seq [ i - 1 ] * 2 * ( 2 * i - 1 ) / ( i + 1 ) ) ;
200+ }
201+ return seq ;
202+ }
203+
204+ function eulerTotient ( n ) {
205+ const seq = [ ] ;
206+ for ( let i = 1 ; i <= n ; i ++ ) {
207+ let count = 0 ;
208+ for ( let j = 1 ; j <= i ; j ++ ) {
209+ if ( gcd ( i , j ) === 1 ) count ++ ;
210+ }
211+ seq . push ( count ) ;
212+ }
213+ return seq ;
214+ }
215+
216+ function binomial ( n , k ) {
217+ if ( k < 0 || k > n ) return 0 ;
218+ let result = 1 ;
219+ for ( let i = 1 ; i <= k ; i ++ ) {
220+ result = result * ( n - i + 1 ) / i ;
134221 }
135222 return result ;
136223}
137224
225+ function bell ( n ) {
226+ if ( n <= 0 ) return [ ] ;
227+ const seq = [ 1 ] ;
228+ for ( let i = 1 ; i < n ; i ++ ) {
229+ let prev = seq [ i - 1 ] ;
230+ let sum = 0 ;
231+ for ( let j = 0 ; j < i ; j ++ ) {
232+ sum += binomial ( i - 1 , j ) * seq [ j ] ;
233+ }
234+ seq . push ( sum ) ;
235+ }
236+ return seq ;
237+ }
238+
239+ function lucas ( n ) {
240+ if ( n <= 0 ) return [ ] ;
241+ if ( n === 1 ) return [ 2 ] ;
242+ const seq = [ 2 , 1 ] ;
243+ for ( let i = 2 ; i < n ; i ++ ) {
244+ seq . push ( seq [ i - 1 ] + seq [ i - 2 ] ) ;
245+ }
246+ return seq ;
247+ }
248+
249+ function tribonacci ( n ) { //n-bonacci
250+ if ( n <= 0 ) return [ ] ;
251+ if ( n === 1 ) return [ 0 ] ;
252+ if ( n === 2 ) return [ 0 , 1 ] ;
253+ const seq = [ 0 , 1 , 1 ] ;
254+ for ( let i = 3 ; i < n ; i ++ ) {
255+ seq . push ( seq [ i - 1 ] + seq [ i - 2 ] + seq [ i - 3 ] ) ;
256+ }
257+ return seq ;
258+ }
259+
260+ function pell ( n ) {
261+ if ( n <= 0 ) return [ ] ;
262+ if ( n === 1 ) return [ 0 ] ;
263+ const seq = [ 0 , 1 ] ;
264+ for ( let i = 2 ; i < n ; i ++ ) {
265+ seq . push ( 2 * seq [ i - 1 ] + seq [ i - 2 ] ) ;
266+ }
267+ return seq ;
268+ }
269+
270+ function golomb ( n ) {
271+ if ( n <= 0 ) return [ ] ;
272+ const seq = [ 1 , 2 , 2 ] ;
273+ for ( let i = 3 ; i < n ; i ++ ) {
274+ let count = 0 ;
275+ for ( let j = 0 ; j < seq [ i - 1 ] ; j ++ ) {
276+ count ++ ;
277+ }
278+ seq . push ( count ) ;
279+ }
280+ return seq ;
281+ }
282+
283+ function stirlingSecond ( n , k ) {
284+ if ( k === 0 || k > n ) return 0 ;
285+ if ( k === 1 || k === n ) return 1 ;
286+ const dp = Array . from ( { length : n + 1 } , ( ) => Array ( k + 1 ) . fill ( 0 ) ) ;
287+ for ( let i = 1 ; i <= n ; i ++ ) {
288+ for ( let j = 1 ; j <= Math . min ( i , k ) ; j ++ ) {
289+ if ( j === 1 || j === i ) {
290+ dp [ i ] [ j ] = 1 ;
291+ } else {
292+ dp [ i ] [ j ] = j * dp [ i - 1 ] [ j ] + dp [ i - 1 ] [ j - 1 ] ;
293+ }
294+ }
295+ }
296+ return dp [ n ] [ k ] ;
297+ }
298+
299+ function collatz ( n ) {
300+ if ( n <= 0 ) return [ ] ;
301+ const seq = [ n ] ;
302+ while ( n !== 1 ) {
303+ if ( n % 2 === 0 ) { n = n / 2 ; }
304+ else { n = ( 3 * n + 1 ) ; } // /2
305+ seq . push ( n ) ;
306+ }
307+ return seq ;
308+ }
309+
310+ function perfectNumbers ( limit ) {
311+ const seq = [ ] ;
312+ for ( let n = 2 ; n <= limit ; n ++ ) {
313+ let sum = 1 ;
314+ for ( let i = 2 ; i * i <= n ; i ++ ) {
315+ if ( n % i === 0 ) {
316+ sum += i ;
317+ if ( i !== n / i ) sum += n / i ;
318+ }
319+ }
320+ if ( sum === n && n > 1 ) seq . push ( n ) ;
321+ }
322+ return seq ;
323+ }
324+
325+ function armstrongNumbers ( limit ) {
326+ const seq = [ ] ;
327+ for ( let n = 0 ; n <= limit ; n ++ ) {
328+ const str = String ( n ) ;
329+ const len = str . length ;
330+ let sum = 0 ;
331+ for ( const digit of str ) {
332+ sum += Math . pow ( parseInt ( digit ) , len ) ;
333+ }
334+ if ( sum === n ) seq . push ( n ) ;
335+ }
336+ return seq ;
337+ }
338+
138339function btn ( minusKey , plusKey ) {
139340 let value = 0 ;
140341 const minusBtn = document . getElementById ( minusKey ) || document . querySelector ( `[data-key="${ minusKey } "]` ) ;
@@ -199,7 +400,6 @@ <h2>📝 Editor</h2>
199400 if ( Math . abs ( ln_t ) < 1e-10 ) return 0 ;
200401 return 1 / ln_t ;
201402 } ;
202-
203403 for ( let i = 0 ; i <= n ; i ++ ) {
204404 const t = a + i * h ;
205405 const val = f ( t ) ;
0 commit comments