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.

A373391 Integers whose American English names (minus punctuation) can be split into two parts wherein the product of the letter-ranks of one part is equal to that of the other.

This page as a plain text file.
%I A373391 #35 Apr 26 2025 20:28:05
%S A373391 3960,13986,15368,80547,85740,111789,111987,386048,408649,408946,
%T A373391 410699,410969,410996,486014,519487,519784,609408,609804,615430,
%U A373391 619814,629428,629824,639438,639834,649448,649844,659458,659854,669468,669864,679478,679874
%N A373391 Integers whose American English names (minus punctuation) can be split into two parts wherein the product of the letter-ranks of one part is equal to that of the other.
%C A373391 By letter-rank we mean a=1, b=2, ..., z=26. If the qualifying split happens beside a letter "a" (as for 408649) there will be two solutions, as moving that "a" to the other side of the split will not affect either product.
%C A373391 There can be no terms involving "million" less than 10^60 ("novemdecillion") since "m" = 13 would otherwise have no counterpart to make the product of all valuations square. - _Michael S. Branicky_, Jun 03 2024
%C A373391 Similarly, there can be no terms involving "quadrillion" less than 10^18 because "q" = 17. a(84)=1000107588, a(10887)=1000000611455. - _Hans Havermann_, Jun 15 2024
%H A373391 Hans Havermann, <a href="https://gladhoboexpress.blogspot.com/2024/06/equal-products-in-split-english-integer.html">Equal products in split English integer names</a>
%e A373391 3960 = threethousandni|nehundredsixty has the product of the letter-ranks of each side of the vertical pipe equal (to 486491443200000).
%o A373391 (Python)
%o A373391 from math import prod, isqrt
%o A373391 from num2words import num2words
%o A373391 def n2w(n): return "".join(c for c in num2words(n).replace(" and", "") if c.isalpha())
%o A373391 def ok(n):
%o A373391     d = [ord(c) - ord('A') + 1 for c in n2w(n).upper()]
%o A373391     if isqrt(s:=prod(d))**2 != s: return False
%o A373391     return any(prod(d[:i]) == prod(d[i:]) for i in range(1, len(d)))
%o A373391 print([k for k in range(10**5) if ok(k)]) # _Michael S. Branicky_, Jun 03 2024
%o A373391 (Python)
%o A373391 from math import prod, isqrt
%o A373391 from num2words import num2words
%o A373391 def n2w(n):
%o A373391     return "".join(c for c in num2words(n).replace(" and", "") if c.isalpha())
%o A373391 def ok(n):
%o A373391     d = [ord(c) - ord("A") + 1 for c in n2w(n).upper()]
%o A373391     pr = prod(d)
%o A373391     s = isqrt(pr)
%o A373391     if s**2 != pr:
%o A373391         return False
%o A373391     p = 1
%o A373391     for i in range(len(d)):
%o A373391         p *= d[i]
%o A373391         if p > s:
%o A373391             return False
%o A373391         if p == s:
%o A373391             return True
%o A373391 for n in range(1, 100000):
%o A373391     if ok(n):
%o A373391         print(n, end=", ")
%o A373391 # _David A. Corneth_, Jun 03 2024, adapted from _Michael S. Branicky_, Jun 03 2024
%Y A373391 Cf. A372222.
%K A373391 nonn,base,word
%O A373391 1,1
%A A373391 _Hans Havermann_, Jun 03 2024