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.

A356748 Numbers k such that k and k+1 are both products of 2 triangular numbers.

Original entry on oeis.org

0, 9, 90, 135, 945, 1710, 1890, 4959, 5670, 8910, 10584, 11025, 11934, 13860, 19305, 21735, 26334, 32130, 36855, 44550, 49140, 65340, 107415, 138600, 172080, 239085, 305370, 351540, 366795, 459360, 849555, 873180, 933660, 1100385, 1413720, 1516410, 1904175, 2297295
Offset: 1

Views

Author

Amiram Eldar, Aug 25 2022

Keywords

Comments

Numbers k such that k and k+1 are both terms of A085780.
Are all the terms divisible by 9?
Yes, because the product of two triangular numbers == 0, 1, 3 or 6 (mod 9). - Robert Israel, Apr 05 2023

Examples

			9 is a term since 9 = 3*3 and 10 = 1*10 are both products of 2 triangular numbers.
		

Crossrefs

Cf. A085780.

Programs

  • Maple
    N:= 10^9: # for terms <= N
    S:= {0}:
    for x from 1 do
      s:= x*(x+1)/2;
      if s^2 > N then break fi;
      for y from x do
        t:= y*(y+1)/2;
        if s*t > N then break fi;
        S:= S union {s*t};
    od od:
    L:= sort(convert(S,list)):
    DL:= L[2..-1]-L[1..-2]:
    J:= select(t -> DL[t]=1, [$1..nops(DL)]):
    L[J]; # Robert Israel, Apr 05 2023
  • Mathematica
    t = Table[n*(n + 1)/2, {n, 0, 3000}]; s = Select[Union[Flatten[Outer[Times, t, t]]], # <= t[[-1]] &]; i = Position[Differences[s], 1] // Flatten; s[[i]]
    Take[Select[Partition[Union[Times@@@Tuples[Accumulate[Range[0,2500]],2]],2,1],#[[2]] - #[[1]]==1&][[All,1]],40] (* Harvey P. Dale, Oct 23 2022 *)
  • Python
    from itertools import count, islice
    from sympy import divisors, integer_nthroot
    def A356748_gen(startvalue=0): # generator of terms >= startvalue
        if startvalue <= 0:
            yield 0
        flag = False
        for n in count(max(startvalue,1)):
            for d in divisors(m:=n<<2):
                if d**2 > m:
                    flag = False
                    break
                if integer_nthroot((d<<2)+1,2)[1] and integer_nthroot((m//d<<2)+1,2)[1]:
                    if flag: yield n-1
                    flag = True
                    break
            else:
                flag = False
    A356748_list = list(islice(A356748_gen(),10)) # Chai Wah Wu, Aug 28 2022