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.
%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