cp's OEIS Frontend

This is a front-end for the Online Encyclopedia of Integer Sequences, made by Christian Perfect. The idea is to provide OEIS entries in non-ancient HTML, and then to think about how they're presented visually. The source code is on GitHub.

A358317 Ordered squares of the chord lengths of the parabola y=x^2, where the chord ends are all possible points of the parabola with integer coordinates.

Original entry on oeis.org

0, 2, 4, 10, 16, 18, 20, 26, 36, 50, 64, 68, 80, 82, 90, 98, 100, 122, 144, 148, 162, 170, 180, 196, 226, 234, 242, 250, 256, 260, 272, 290, 320, 324, 338, 362, 400, 404, 442, 450, 484, 490, 500, 530, 576, 578, 580, 592, 612, 626, 650, 676, 720, 722, 730, 738, 784, 788, 810, 842, 882, 900, 962, 980
Offset: 1

Views

Author

Nicolay Avilov, Nov 09 2022

Keywords

Comments

Numbers of the form (x^2 - z^2)^2 + (x-z)^2 for integers x and z, so that terms are sums of 2 squares (subset of A001481).
Numbers of the form m^2*(k^2 + 1) for integers m and k of the same parity.
Chords starting at the origin (z=0, or m=k) are terms A071253(x).

Examples

			0 is a term since it is the square of the chord length from (0,0) to (0,0).
10 = 1^2 + 3^2 is a term since it is the square of the chord length from (1,1) to (2,4).
		

Crossrefs

Programs

  • Python
    # Program from Oleg Sorokin
    from math import isqrt
    limit = 2000
    s = set()
    end = isqrt(limit)
    for m in range(0, end+1):
        for k in range(m%2, end+1, 2):
            c = m**2*(k**2+1)
            if c > limit:
                break
            s.add(c)
    print(sorted(s))
    
  • Python
    from itertools import count, islice
    from sympy import divisors, integer_nthroot
    def A358317_gen(startvalue=0): # generator of terms >= startvalue
        for n in count(max(startvalue,0)):
            if n == 0:
                yield 0
            else:
                for d in divisors(n,generator=True):
                    a, b = integer_nthroot(d,2)
                    if b:
                        c, e = integer_nthroot(n//d-1,2)
                        if e and not (c^a)&1:
                            yield n
                            break
    A358317_list = list(islice(A358317_gen(),30)) # Chai Wah Wu, Nov 24 2022