login

Year-end appeal: Please make a donation to the OEIS Foundation to support ongoing development and maintenance of the OEIS. We are now in our 61st year, we have over 378,000 sequences, and we’ve reached 11,000 citations (which often say “discovered thanks to the OEIS”).

A342304
k-digit positive numbers exactly one of whose substrings is divisible by k.
1
1, 2, 3, 4, 5, 6, 7, 8, 9, 21, 23, 25, 27, 29, 41, 43, 45, 47, 49, 61, 63, 65, 67, 69, 81, 83, 85, 87, 89, 101, 104, 107, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 122, 125, 128, 131, 134, 137, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 152, 155, 158, 161
OFFSET
1,2
COMMENTS
Inspired by the 413th problem of Project Euler (see link) where such a number is called "one-child number".
There are k*(k+1)/2 substrings. All are considered, even when some are duplicates as strings or as numbers (see the Example section). 0 is always divisible by k so any number with two or more 0 digits is not a term. - Kevin Ryde, Mar 08 2021
The 2-digit terms are odd.
The number of k-digit terms for k = 1, 2, 3 is respectively 9, 20, 360.
From Robert Israel, Mar 11 2021: (Start)
5-digit terms are numbers starting with 5, and with no other digits 5 or 0.
There are no 10-digit terms. (End)
EXAMPLE
107 is a 3-digit one-child number since among its substrings 1, 0, 7, 10, 07, 107 only 0 is divisible by 3.
222 is a 3-digit one-child number since among its substrings 2, 2, 2, 22, 22, 222 only 222 is divisible by 3.
572 is not a 3-digit one-child number, since among its substrings 5, 7, 1, 57, 72, 572 both 57 and 72 are divisible by 3.
616 is not a 3-digit one-child number, since among its substrings 6, 1, 6, 61, 16, 616 the two 6's are both divisible by 3.
MAPLE
filter:= proc(n) local L, d, i, j, k, ct, x;
L:= convert(n, base, 10);
d:= nops(L);
ct:= 0:
for i from 1 to d do
for j from i to d do
x:= add(L[k]*10^(k-i), k=i..j);
if x mod d = 0 then ct:= ct+1; if ct = 2 then return false fi fi;
od od;
evalb(ct = 1)
end proc:
select(filter, [$1..200]); # Robert Israel, Mar 11 2021
PROG
(Python)
def ok(n):
s, c = str(n), 0
ss = (s[i:j] for i in range(len(s)) for j in range(i+1, len(s)+1))
for w in ss:
if int(w)%len(s) == 0: c += 1
if c == 2: return False
return n > 0 and c == 1
print([k for k in range(162) if ok(k)]) # Michael S. Branicky, Aug 15 2022
CROSSREFS
Cf. A063527.
Sequence in context: A069571 A039173 A103951 * A098951 A097962 A247813
KEYWORD
nonn,base
AUTHOR
Bernard Schott, Mar 08 2021
STATUS
approved